【发布时间】:2018-04-01 09:02:34
【问题描述】:
我正在尝试使用 python 请求向 IIS 服务器发送 https 请求并获取解析的响应。身份验证是使用自签名证书完成的。我使用以下命令生成了带有密码和密钥的证书。我在 requests.get 方法中使用 TestPublicKey.pem 和 plainkey.pem 作为 cert 属性的输入。有人可以指导我如何实现这一目标吗?
C:\OpenSSL-Win64\bin>openssl req -x509 -newkey rsa:2048 -keyout TestPrivateKey.pem -out TestPublicKey.pem -days 9999
C:\OpenSSL-Win64\bin>openssl pkcs12 -inkey TestPrivateKey.pem -in TestPublicKey.pem -export -out Test.pfx
Enter pass phrase for cTestPrivateKey.pem:
Enter Export Password:
Verifying - Enter Export Password:
C:\OpenSSL-Win64\bin>openssl rsa -in TestPrivateKey.pem -out plainkey.pem
Enter pass phrase for TestPrivateKey.pem:
writing RSA key
import requests
url = "https://10.110.20.75/REST/getxml"
r = requests.request("GET", url, verify=False,cert=('TestPublicKey.pem','plainkey.pem'))
print r.status_code
如果 verify 设置为 False ,则获取 403 status_code。如果verify 设置为True,则会引发 SSL 错误异常。
raise SSLError(e, request=request)
requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)
【问题讨论】:
-
r = requests.request("GET", url, verify=False)应该可以工作 -
我的目标是使用自签名证书进行身份验证。我正在使用请求模块,如果有任何替代方案,请告诉我
标签: python openssl python-requests pyopenssl