我继承了一个项目,其中3235通过MQTTS (又称基于TLS的MQTT)连接到MQTT服务器。 原来的维护人员已经离开了,留下的文档也很少。
我们怀疑3235的安全证书即将到期。 我有一些原开发者可能使用过的证书,但我没有证据证明它们是正确的证书。 由于这是在固件中,因此要将客户端证书提取到PC上需要花费大量的精力。
现在我记得在我的Java时代,有一个程序允许您在将客户端连接到该服务器时捕获服务器端证书。 我希望我也能这样做,使用openssl捕获与运行openssl s_server的PC的客户端连接,并将客户端证书转储出去,以便我可以查看内容。
到目前为止,我已经有了以下命令:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keout cert.key cert.pem -subj "/CN=MN4-WJOHNSON.dccmn.com -addext "subjectAltName=IP:192.168 .2.77 "
生成服务器证书(如果没有服务器证书,3235将无法连接)
openssl s_server -debug -port 443 -verify 2 -key cert.key -cert cert.pem -msg -security_debug_verbose
客户端似乎已连接,但关闭时显示:
SL_ERROR_BSD_ESEC_ASIN_NO_signer_E (-688L)/* ASN无签署人确认失败*/
这是否意味着它不会与自签名证书连接? 我正在使用AT_COMMAND应用程序。 我看不到将驱动程序配置为接受自签名证书的方法。 我还在尝试用虚拟根ca-cert签署证书 这是否有效? 如何使用虚拟证书签署我的自签名证书?
还有其他想法吗? 谢谢。