Python请求:.pem - > .crt +键

时间:2014-05-16 23:04:44

标签: openssl certificate python-requests

我已获得一个.pem文件,用于在XML POST API上进行身份验证。我更喜欢使用Python请求,并在文档中找到我需要将.pem文件转换为服务器认证和密钥。我一直无法确切地找到需求(什么样的认证)。

之前我必须对文件进行一些openssl转换,但我不是专家。任何人都可以解释请求需要什么样的证书和密钥,以及如何将.pem转换为这些文件?

有关请求文档的更多信息,请参阅http://docs.python-requests.org/en/latest/user/advanced/#ssl-cert-verification

您会注意到对/path/server.crt/path/key的引用。

2 个答案:

答案 0 :(得分:6)

您可以在此处利用请求(see documentation here)的行为,而无需生成crt或密钥文件。

我们在这里说pem文件:/path/to/certificate.pem,您可以这样做:

r = requests.get('https://example.com', verify='/path/to/cetificate.pem')

它应该完美无缺。

答案 1 :(得分:2)

路径以/path/server.crt给出,但文本显示为"您还可以指定本地证书用作客户端端证书,作为单个文件(包含私钥和证书)或作为文件路径的元组..."

由于您已获得身份验证的PEM文件,因此似乎客户端需要发送CLIENT证书。您需要客户端证书和客户端私钥。

查看那个PEM文件,你应该看到" ----- BEGIN CERTIFICATE -----"。再往前看,经过" -----结束证书----",是否有一个" -----开始RSA私钥-----" ?如果是这样,您在同一文本文件中同时拥有证书和私钥,并且您可以(根据文档)使用一个文件。或者,只需将RSA密钥部分剪切并粘贴到单独的文本文件中,并将该文件命名为" key"。