使用加密的PEM客户端证书调用REST api

时间:2015-10-03 15:04:01

标签: python python-2.7 ssl curl pem

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

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

  • 我不想在任何地方保存未加密的证书。
  • 用户应该只提供一次密码短语,然后再提出几个请求。
  • 它必须与python 2.7.3一起使用,最好是使用python 2.6

1 个答案:

答案 0 :(得分:0)

我设法找到了使用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()