如何使用 node-opcua 客户端信任自签名服务器证书

Posted

技术标签:

【中文标题】如何使用 node-opcua 客户端信任自签名服务器证书【英文标题】:How to trust a self-signed server certificate with the node-opcua client 【发布时间】:2021-03-16 14:46:44 【问题描述】:

我有一个简单的 node-opcua 客户端,它想通过 Basic128Rsa15 策略连接到服务器。

我创建了一个自签名证书,服务器确实收到了这个证书,我可以将它在服务器上移动到受信任的 pki 目录。

在我的客户端 - node-opcua - 我还看到一个新目录“pki/rejected”,其中包含来自服务器的证书。

我现在的问题是:我现在必须做什么才能让客户端信任来自服务器的这个自签名证书?

我已经尝试创建一个“受信任”目录并将其移动到那里,但这没有帮助,我还尝试添加一个选项(我通过 google 找到): serverCertificate=crypto_utils.readCertificate(" pki/trusted/04c9f401be19e5a2349460306579c692e777cea5.pem");但这也无济于事。当我启动客户端时,它会在“rejected”文件夹中再次创建证书。

我的 node-opcua 连接选项:

选项: securityMode: 3 # None = 1, Sign = 2, SignAndEncrypt = 3 安全政策:“http://opcfoundation.org/UA/SecurityPolicy#Basic128Rsa15” 证书文件:证书/cert.pem privateKeyFile:证书/key.pem

【问题讨论】:

【参考方案1】:

[编辑]

2.30 版以后:node-opcua 客户端现在执行来自服务器的完整证书验证:

如果服务器证书已由 CA 生成,则 CA 证书必须与相应的 CRL 一起出现在客户端的 PKI(在颁发者文件夹中)中。 默认情况下,客户端证书管理器接受有效的未知服务器证书以向后兼容以前的版本。这可以通过将 automaticallyAcceptUnknownCertificates 设置为 false 来恢复。 执行其他检查以验证服务器的证书是否严格符合 OPCUA 的要求,例如 subjectAltName.uniqueResourceIdentify 必须匹配服务器的 applicationUri、keyUsage、密钥长度等... 如果服务器证书已知并且在拒绝文件夹中,客户端将拒绝与服务器的连接。

2.28 及以下版本:node-opcua 客户端尚未执行服务器证书信任/拒绝检查,也未执行完整的证书验证,只是基本验证(日期、签名...)

【讨论】:

嗨,谢谢,这意味着即使证书是在“rejected”目录中创建的,客户端也会信任该证书。好的。如果是真的,我在连接到我的 OPC UA 服务器时遇到另一个问题... @AndreasVogler ,你是对的,你的问题可能在其他地方

以上是关于如何使用 node-opcua 客户端信任自签名服务器证书的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat 服务器和 HTTP 客户端接受过期的自签名证书

WCF 自签名证书在客户端上不受信任

信任来自 IIS 的自签名证书

将 Java syslog 客户端配置为信任自签名证书

https本地自签名证书添加到信任证书访问

在调用 Web 服务时信任过期的自签名证书