node-opcua客户端连接西门子S7-1500 OPCUA服务器证书链异常咨询
关于node-opcua连接西门子S7-1500 OPCUA服务器的证书验证问题
我使用node-opcua客户端连接西门子S7-1500 OPCUA服务器,已将自认为正确的证书放置在指定PKI文件夹中,但仍出现如下输出:
serverCertificate = 12ffc2f86bd61eb68ce3b717426e08babbd7454d serverCertificate = MIIEHDCCAwSgAwIBAgIIWHEfo4fZJkgwDQYJKoZIhvcNAQELBQAwSDEnMCUGA1UEAxMeU2llbWVucyBUSUEgUHJvamVjdCAtIFByb2plY3QyMQswCQYDVQQGEwJERTEQMA4GA1UEChMHU2llbWVuczAeFw0yNTAxMDkxNjAzMzZaFw0zNzAxMDkwNTAwMDBaMDgxFzAVBgNVBAMTDlBMQy0xL09QQ1VBLTEzMQswCQYDVQQGEwJERTEQMA4GA1UEChMHU2llbWVuczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKShdHG9BQUIp7ABx+CpBNtr7juc+wRZXBqCxrAFmLAaNB/iUyHLMQyfXe3PaI4xR2oVIZYhOdgd48yhISO/+ZNfWjsUbj7Us5aP/jh4UwzID6pFRGnR09BYcy/Kkq3hNw5akjvDpCus3i8vUfeZH0oSnmeMUhzpbsc9qT6SfvtYR1KMs6bkOPJTJoIkzxT40ORGmuOT2lRudJHqDro9cxnthSQi30xSSKo3C9bnBMfVf3wQfL8HcBUUug3CgorxJ9zTwv6iA+pnuXVUES4Har9elP4Mu0NknWuimvvOnL9Wmjy0UgiOLW4xZovEs+aeC6LqpcGqpRC7K3ran2bUCvMCAwEAAaOCARgwggEUMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFOkDt2wcO7ph+gYRJRmQlzU6CKaAMHcGA1UdIwRwMG6AFCvw98tAwJOEGuhzesIKz5G1QUYKoUykSjBIMScwJQYDVQQDEx5TaWVtZW5zIFRJQSBQcm9qZWN0IC0gUHJvamVjdDIxCzAJBgNVBAYTAkRFMRAwDgYDVQQKEwdTaWVtZW5zggg8DcpICPTPKTAOBgNVHQ8BAf8EBAMCBPAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMD0GA1UdEQQ2MDSGLHVybjpTSU1BVElDLlM3LTEyMDAuT1BDLVVBLkFwcGxpY2F0aW9uOlBMQ18xhwQKwPQLMA0GCSqGSIb3DQEBCwUAA4IBAQAaCZBox7LnySbKulEjtWJi5rGeyYOKw7bmd9CM6djpLrJ5BXdNGZzkLX5P/ZBzrYPZbo5PguvzQHeb3YbHSkzzRirspuGaFZGktAOwBk5uI6BqZPcwSsl2zqoL2lac4kMeOdYVNQVM0wdzGBySPMkOOvuEIwUux/kFAkoO4lfgF2dWpx8X9JTQqq/G1M+yh6Z2ddUUXBdahSx9mz37j0rpf2uA582K7p4Uwqtf+JVeGNn8dXM6AKHJawq7bSsQ/lmWv7b1GtXgRodn+NWmcvkAUn7btMfkIHjU1vebRiqaQbTFMhWXHQ5FQNuY1ZCpEEmSRhjPajKx8Rnc4ZJsyoQl [NODE-OPCUA-W25] client's server certificate verification has failed server Certificate verification failed with err BadCertificateChainIncomplete (0x810d0000)
咨询问题:
- 第一个serverCertificate是否为哈希值?
- 能否将这两个证书合并以通过验证?
问题解答
1. 第一个serverCertificate是否为哈希值?
是。12ffc2f86bd61eb68ce3b717426e08babbd7454d是服务器证书的SHA-1哈希值,是证书内容的摘要计算结果,用于唯一标识该证书。
2. 能否将这两个证书合并以通过验证?
不能。报错BadCertificateChainIncomplete的核心原因是证书链不完整——你只放置了服务器自身的证书,缺少签发该服务器证书的上级CA证书(比如西门子的根CA或中间CA证书),合并这两个内容无法解决问题。
正确的解决步骤:
- 从西门子官方渠道获取S7-1500 OPCUA服务器对应的完整证书链文件,包含根CA证书、中间CA证书和服务器证书
- 将证书链中的所有CA证书导入到node-opcua客户端的
trustedPKI目录,确保格式为PEM或DER(符合node-opcua要求) - 确认服务器端的OPCUA配置已正确启用证书链验证
如果仅用于测试,可临时关闭证书验证(生产环境禁止):在客户端配置中设置securityMode: "None",或者添加serverCertificateVerify: (certificate, callback) => callback(null)跳过验证逻辑。
内容的提问来源于stack exchange,提问作者user2132190
相关产品推荐
相关产品推荐

