我在连接到安全网址时在python中遇到SSL错误。作为一个快速的工作,我通过verify=false
,它的工作。后来我得到了.cer文件,现在提供文件路径来验证。现在我得到
SSLError:未知错误(_ssl.c:2825)
有什么问题?
是因为我给了.cer而不是.pem? 我可以将.cer转换为.pem文件吗?
如何解决这个问题?
答案 0 :(得分:0)
从本质上讲,是的-此“未知错误”是使用.cer
文件而不是.pem
文件的结果。我只是遇到了这个问题,但使用了不同的行号(_ssl.c:4025
左右),但在其他方面却表现出相同的症状,而是使用.pem
证书文件对其进行了修复。
HUB和Marcel Friedmann在服务器故障here's how to convert a certificate between those formats:上的致谢
使用记事本++或类似工具打开证书文件。如果它以-----BEGIN CERTIFICATE-----
开头,则已经采用正确的格式-只需将其重命名为.pem
。
否则,如果您安装了OpenSSL,则这很简单:
openssl x509 -inform der -in certificate.cer -out certificate.pem
如果您没有安装OpenSSL,但是确实有Java的keytool
,则可以使用它,但是有点麻烦。
首先,找到不介意使用的密钥库。如果您没有,请创建一个:
# create a dummy certificate in the file test.keystore, forcing the keystore to be created
keytool -genkey -alias test -keystore test.keystore
# and now delete the cert
keytool -delete -alias test -keystore test.keystore
# the (empty) keystore will still exist
然后,导入.cer
格式的证书:
keytool -import -trustcacerts -alias test -file certificate.cer -keystore test.keystore
最后,将其导出为.pem
(确保其格式正确):
keytool -exportcert -alias test -file certificate.pem -rfc -keystore test.keystore
如果您没有OpenSSL或Java keytool
,则需要安装其中之一,或者找到另一种方法。