Anu*_*til 5 python python-2.7 python-requests
我正在使用请求库来自动化 API/微服务。我尝试在获取请求中传递 URL、证书(证书文件和密钥文件的路径)。
运行程序后,它会询问 PEM 密码短语。请参考下面的命令提示符行。
>>> r = requests.get("https://foo.example.com/api/user/bill", cert=("client.crt", "client.key"))
Enter PEM pass phrase:
>>>
Run Code Online (Sandbox Code Playgroud)
如何在程序中以编程方式传递密码,以避免在程序中输入PEM密码的人工干预?
requests 库尚不支持受密码保护的 PEM 文件。
一种选择是将其转换为 pkcs12 文件并使用https://pypi.org/project/requests-pkcs12/中的 requests-pkcs12 库
另一种选择是将其转换为 pkcs12 文件,然后转换为无密码的 PEM 文件。
您可以将其转换如下:
# Password protected PEM to pkcs12
openssl pkcs12 -export -out cert.p12 -in cert.pem -inkey key.pem -passin pass:supersecret -passout pass:supersecret
# pkcs12 to PEM without password
openssl pkcs12 -in cert.p12 -out cert_without_pwd.pem -nodes -password supersecret
Run Code Online (Sandbox Code Playgroud)
看来在撰写本文时(2018 年 8 月),您运气不佳。2013 年 9 月以来,请求跟踪器上有一个未解决的问题,专门解决了这种情况。列出了几种解决方法,涉及使用不同的库或生成没有密码的新密钥。
据我所知,目前无法指定用于身份验证的客户端证书的密码。
这是一个问题,因为您通常总是希望用密码保护包含私钥的 .pem 文件。openssl 甚至不会让你创建一个没有密码的。
| 归档时间: |
|
| 查看次数: |
4732 次 |
| 最近记录: |