【问题标题】:Calling a REST api with an encrypted PEM client certificate使用加密的 PEM 客户端证书调用 REST api
【发布时间】:2015-10-03 15:04:00
【问题描述】:

我有一个加密的客户端证书和一个加密的密钥作为 PEM 文件,并希望在网站上进行身份验证并使用 python 脚本获取页面(通过 GET)。我已经设法在 shell 中使用 curl 来做到这一点。所以我尝试从python脚本调用curl,但我不能使用subprocess.Popen通过stdin发送密码,因为curl不通过stdin读取密码(类似于ssh)。如果有一种方法可以使用 python 标准库来解码加密证书并使用它来访问网站,我会更高兴。

我找到了几个解决类似问题的建议,但没有一个满足我的所有要求:

  • 我不想将未加密的证书保存在任何地方。
  • 用户只应提供一次密码,随后应发出多个请求。
  • 它必须与 python 2.7.3 一起工作,最好甚至与 python 2.6 一起工作

【问题讨论】:

标签: python python-2.7 ssl curl pem


【解决方案1】:

我设法使用 pycurl 找到了解决方案:

import pycurl
from StringIO import StringIO
buffer = StringIO()
c = pycurl.Curl()
c.setopt(c.URL, MYURL)
c.setopt(c.WRITEFUNCTION, buffer.write)
c.setopt(c.SSLCERT, 'clientcert.pem')
c.setopt(c.SSLCERTPASSWD, passphrase)
c.setopt(c.SSLKEY, 'clientkey.pem')
c.perform()
c.close()
print buffer.getvalue()

【讨论】:

    猜你喜欢
    • 2021-02-09
    • 1970-01-01
    • 2020-09-05
    • 2017-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    • 1970-01-01
    相关资源
    最近更新 更多