【发布时间】:2020-01-24 09:16:03
【问题描述】:
所以我正在向我的 IoT 中心验证 X509 证书,以便从我的应用程序发送/接收消息。但是它不断抛出ssl.SSLError: [SSL] PEM lib (_ssl.c:3833) 错误。
我有正确的证书、私钥和密码。于是我就去python github查看了一下错误是什么意思,_ssl.c文件中的3833行是什么意思
r = SSL_CTX_use_certificate_chain_file(self->ctx,
PyBytes_AS_STRING(certfile_bytes));
PySSL_END_ALLOW_THREADS_S(pw_info.thread_state);
if (r != 1) {
if (pw_info.error) {
ERR_clear_error();
/* the password callback has already set the error information */
}
else if (errno != 0) {
ERR_clear_error();
PyErr_SetFromErrno(PyExc_OSError);
}
else {
_setSSLError(NULL, 0, __FILE__, __LINE__); <--- THIS IS LINE 3833
}
goto error;
}
这是否意味着我的证书有误?我的证书目前是 C:/Certificate/MyCertName.pfx 之类的位置 感谢您的阅读,感谢您提供任何帮助!
python 3.7.4 中_ssl.c 的来源:https://github.com/python/cpython/blob/v3.7.4/Modules/_ssl.c
【问题讨论】:
-
要获取与您的 Python 副本相对应的源代码,您需要检查的不是分支的尖端,而是与您的特定版本相对应的标签/提交。
sys.version有这个信息。 -
@ivan_pozdeev 您好,感谢您指出这一点!我确实查看了错误的文件,我的版本是 v3.7.4,我已经更新了问题,谢谢!
标签: python ssl azure-iot-hub