概要
利用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 后的 BEGIN /END 的相关信息
Bag Attributes
localKeyID: xxxxxx
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:xxxxxxx
subject=CN = xxxxxxxxxx
issuer=DC = xxxx, DC = xxxx, CN = xxxxx
-----BEGIN CERTIFICATE-----
xxxxxxxxxxxx
-----END CERTIFICATE-----
标签:xxxx,xxx,mismatch,DC,pem,values,key,Attributes,----- From: https://www.cnblogs.com/daftprogrammer/p/17149966.html