2012-05-03 39 views
1

我需要使用由我們的公司授權簽署的證書對服務器進行HTTPS調用。我如何配置python來信任這個證書頒發機構?使用Python中的公司認證機構進行HTTPS證書驗證

+0

[HTTPS連接Python]的可能重複(http://stackoverflow.com/questions/2146383/https-connection-python) –

+1

[用Python驗證SSL證書]的可能重複(http://stackoverflow.com/ questions/1087227/validate-ssl-certificates-with-python) – systempuntoout

+1

這不是如何製作https/ssl,而是如何添加一個受信任的權威 – Brig

回答

0

默認情況下(假設您使用的是httplib.HTTPSConnection),您無需執行任何操作,即httplib doesn't do any certificate verificationsame applies to urllib)。

當然,這不是一件好事,你應該驗證服務器證書。有多種解決方案(見this question)。

總之,您可能必須手動擴展httplib.HTTPConnection才能通過ssl.wrap_socket手動將套接字轉換爲SSL套接字,以便能夠插入驗證回調(您需要驗證主機名和證書) 。

另外,如果你不侷限於httplib,使用PycURL肯定會使這個更清潔。您可以配置CA_INFO(或CA_PATH)以指向您的內部CA證書。另外,它通常沒有預先定義的CA列表,但是您可以從here(從Mozilla列表中轉換)中獲得一個,並在需要時將這些證書添加到您信任的CA列表中。

0

如果您正在尋找示例代碼來解決這個問題,在這裏它是在PycURL

import pycurl 
curl = pycurl.Curl() 
curl.setopt(pycurl.URL, "https://your-secure-website.com/") 
curl.setopt(pycurl.SSL_VERIFYPEER, 1) 
curl.setopt(pycurl.SSL_VERIFYHOST, 2) 
curl.setopt(pycurl.CAINFO, "/path/to/your-corporate-certificate-chain.crt") 
curl.perform() 

請務必將您的企​​業證書,chain.crt文件放置在可訪問的位置和用途pycurl.CAINFO選項指向它。

相關問題