【问题标题】:How to authenticate self signed certificate with password using Python requests如何使用 Python 请求使用密码验证自签名证书
【发布时间】: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


【解决方案1】:

我通过尝试使用以下 openssl 命令和 python 代码解决了这个问题。 注意:此答案为无密码证书,如有答案或cmets。很高兴看到。

Open SSL commands

生成自签名证书

openssl req -x509 -nodes -days 30 -newkey rsa:2048 -keyout test_Private.key -out test_certificate.cer -subj "/CN=*.hpe.com"

将证书和私钥转换为.PFX

openssl pkcs12 -export -out test_PFX.pfx -inkey test_Private.key -in test_certificate.cer -name "*.hpe.com" -passout pass: 

Python code

import requests
url = "https://10.110.20.75/REST/getxml"
webServiceResponse=requests.request("GET",url,verify='test_certificate.cer)
print webServiceResponse.status_code
print webServiceResponse.json()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 2016-04-18
    • 2015-03-03
    • 1970-01-01
    相关资源
    最近更新 更多