簡體   English   中英

如何使用Python請求使用密碼對自簽名證書進行身份驗證

[英]How to authenticate self signed certificate with password using Python requests

我正在嘗試使用python請求將https請求發送到IIS服務器並獲取響應以進行解析。身份驗證是使用自簽名證書完成的。我已經使用以下命令生成了帶有密碼和密鑰的證書。 我正在使用TestPublicKey.pem和plainkey.pem作為request.get方法中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)

我通過嘗試以下openssl命令和python代碼來解決此問題。 注意:此答案是沒有密碼的證書,如果有任何答案或意見。我很高興看到。

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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM