2015-10-03 57 views
0

我有一個加密的客戶端證書和一個加密的密鑰作爲PEM文件,並且希望在網站進行身份驗證並使用python腳本獲取頁面(通過GET)。我已經設法在shell中使用捲曲。所以我試圖從python腳本調用curl,但是我不能使用subprocess.Popen通過stdin發送密碼,因爲密碼不是通過標準輸入(通過curl讀取的)(類似於ssh)讀取的。如果能夠使用python標準庫來解碼加密證書並使用它來訪問網站,我會更加高興。使用加密的PEM客戶端證書調用REST api

我發現了幾個建議,爲解決類似的問題,但其中不符合所有我的要求:

  • 我不想在任何地方保存未加密的證書。
  • 用戶應該只提供他們的密碼一次,隨後應該提出幾個請求。
  • 它必須與Python 2.7.3工作,甚至優選與Python 2.6
+0

也許這是你在找什麼? http://stackoverflow.com/questions/23705770/python-requests-pem-crt-key – sirfz

回答

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()