Requests 访问中出现key values mismatch的问题的一种情况
概要
利用Requests访问网站。证书为pfx格式。当用openssl转换成pem格式并分离公钥私钥后,访问中出现
‘(Caused by SSLError(SSLError(116, '[X509: KEY_VALUES_MISMATCH] key values mismatch’
详细过程
先把pfx 用openssl 命令转换成 pem格式,因为这样才能把公钥和私钥分离,至于为何分离,是由于Requests需要。(没有找到其他的访问方式)
转换 pem 格式命令
openssl pkcs12 -in xxx.pfx -nodes -out xxx.pem
分离公钥
openssl x509 -in xxx.pem -out xxx_pub.crt
分离私钥
openssl rsa -in xxx.pem -out xxx.key
用Python requests 访问并带上公/私钥:
requests.get('https://xxx',cert =(xxx_pub,xxx.key))
然后遇到了上面的错误, 查了很多信息,但是无法解决。偶然发现转提取出来的公钥部份并不正确,推测是因为使用的证书中含有根证书信息, 于是手动把公钥复制到xxx_pub.crt 文件中,错误即可解决。
本人使用证书(pem格式)如下所示。
总结为:对应公钥内容为 Bag Attributes 后有相应 'localKeyID' 的
Bag Attributes
localKeyID: <ID info>
friendlyName: xxxxxxx
CSP Name: xxxxxxxxx
Key Attributes
X509v3 Key Usage: 10
-----BEGIN PRIVATE KEY-----
xxxxxxxxxxx
-----END PRIVATE KEY-----
Bag Attributes: <Empty Attributes>
subject=DC = xxx, DC = xxxx, CN = xxxx
issuer=DC = xxxx, DC = xxxx, CN = xxxxx
-----BEGIN CERTIFICATE-----
xxxxxxxxxxxx
-----END CERTIFICATE-----
Bag Attributes: <Empty Attributes>
subject=DC = xxx, DC = xxxx, CN = xxxxxx
issuer=DC = xxxx, DC = xxxx, CN = xxxxx
-----BEGIN CERTIFICATE-----
xxxxxxxxxxxxx
-----END CERTIFICATE-----
Bag Attributes
localKeyID:<ID info>
subject=CN = xxxxxxxxxx
issuer=DC = xxxx, DC = xxxx, CN = xxxxx
-----BEGIN CERTIFICATE-----
xxxxxxxxxxxx
-----END CERTIFICATE-----
浙公网安备 33010602011771号