python - 如何在 Python 中以编程方式传递密码
问题描述
我正在使用请求库来自动化 API/微服务。我尝试在获取请求中传递 URL、证书(证书文件和密钥文件的路径)。
运行程序后,它会询问 PEM 密码。请参考下面的命令提示行。
>>> r = requests.get("https://foo.example.com/api/user/bill", cert=("client.crt", "client.key"))
Enter PEM pass phrase:
>>>
如何在程序中以编程方式传递密码以避免在程序中输入 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
推荐阅读
- javascript - 如何在控制台中为 doc 文件设置原始谷歌附加组件
- php - 通知 php 脚本
- ios - 自定义创建的视图大小不会根据约束而改变
- javascript - 如何正确使用 v-bind (vue.js)
- c++ - 如何创建传递指定对象的成员函数的线程?
- php - 更改和确认密码 MySql PHP
- angular - 组件中的模拟服务仍然需要 HttpClient 作为提供者
- android - Android如何在点击一个通知后将其他通知保留在通知托盘上
- node.js - Math.eval 帮助:有时函数有效,有时无效
- php - 消息:未定义的属性:stdClass::$book_id