哪个X.509证书用于NodeMCU SSL连接?

问题描述 投票:0回答:1

哇,SSL认证不堪重负!

我正在使用NodeMCU设备(ESP8266)设备通过MQTT协议安全地连接到Microsoft Azure IoT中心。

Microsoft提供了使用自签名X.509证书授权客户端的功能。

此详细说明:Using X.509 Certificates with IoT Hub

我遵循了Microsoft Azure提供的示例,使用OpenSSL生成我的自签名X.509证书。

我尝试使用新的证书和这很好用示例Python脚本来测试作为客户端的连接。因此,我知道该过程已经成功,因为它已经过测试和运行,并且能够发布和订阅我的IoT中心。

为了使NodeMCU设备作为客户端连接到IoT中心,我需要加载证书进行身份验证。 NodeMCU提供了将单个 CA证书(PEM格式)加载到操作系统中的功能。

在此处记录:NodeMCU TLS Documentation

问题是,我应该使用哪个证书?

我已经尝试了OpenSSL输出中的一些组合,但是似乎没有一个成功的握手结果。我正在这个阶段king跃,希望可以从知道他们的东西的人那里得到一些意见。

令人鼓舞的消息是NodeMCU将证书识别为X.509证书,但验证失败。因此,这使我相信我加载了错误的证书...

-0x2700 MBEDTLS_ERR_X509_CERT_VERIFY_FAILED

证书验证失败,例如CRL,CA或签名检查失败。

azure openssl certificate x509 nodemcu
1个回答
0
投票

您需要使用NodeMCU端上的RSA客户端证书和私钥来使用X.509身份验证来验证客户端。

您可以将PEM格式的证书和私钥放入NodeMCU闪存中,并将其加载到SRAM中。将证书和私钥包含在“ EOF(“”)EOF“标签中是一个好主意。

希望您使用的是ESP8266的Arduino内核,您可以让他们利用BearSSL格式化传输层的证书文件,并按如下所示与WiFiClientSecure对象关联:

BearSSL::WiFiClientSecure espClient;

BearSSL::X509List serverCertList(getCertificate());
BearSSL::PrivateKey serverPrivKey(getPrivateKey());
espClient.setClientRSACert(&serverCertList, &serverPrivKey);

您应该定义的getCertificate()和getPrivateKey()方法从闪存读取证书(或在此处传递包含PEM格式的证书和私钥的字符数组)。之后,如果您的证书和私钥属于有效链,您将可以通过服务器对客户端进行身份验证。

© www.soinside.com 2019 - 2024. All rights reserved.