【发布时间】:2018-01-31 08:28:45
【问题描述】:
我目前正在尝试在 python 中复制一个 java 工具,该工具允许用户继续对云中的应用程序进行一些 REST API 调用。 使用此 Java 工具,您可以创建使用传统用户/密码类型凭据或 .cer 证书的脚本。
我可以使用 requests 库轻松地在 Python 中重新创建用户/密码身份验证。
但对于证书方式,则另当别论。几天来我一直在寻找用 Python 做的解决方案,但看起来 .cer 证书对于 Python 来说是不够的。
我是 SSL/TLS 的新手,所以我可能不了解它背后的所有概念,但似乎除了 .cer 证书(这是一种 PEM 格式,包含公钥和“--- --BEGIN CERTIFICATE----- -----END CERTIFICATE-----" 部分),我需要获取私钥。这很奇怪,因为 Java 工具根本不需要它。
如果有人能在这个话题上启发我,那就太好了!
谢谢,
克里斯
附加信息:
正如 Steffen 所问(我真的很感谢您的帮助),我会更准确。 我正在尝试使用 Python 执行此请求:
req = requests.request('GET','https://api.YXZ.com/1/9/whatever/', cert='certificate.pem')
我有这个错误信息:
requests.exceptions.SSLError: HTTPSConnectionPool(host='api.XZY.com', port=443): 最大重试次数超出 url: /1/9/whatever (由 SSLError(SSLError(336265225, u'[ SSL] PEM 库 (_ssl.c:2603)'),))
我相信这是由于我的证书,因为我可以通过基本身份验证执行此请求。
由于以下命令,我可以看到证书中的内容:
openssl x509 -text -inform DER -in certificate.cer
这给了我以下格式的文本:
数据: 签名算法: 发行人 有效性: 主题公钥 签名算法: -----开始证书----- -----结束证书-----
【问题讨论】:
-
我觉得 requests 库必须支持一些 ssl/tls。请参阅文档。
-
另见hpbn.co/transport-layer-security-tls。了解 ssl/tls 的绝佳资源
-
谢谢瓦西夫。我会深入研究一下
标签: java python ssl python-requests x509certificate