2011-03-30 64 views
4

我正在構建一個快速python腳本以定期檢查我的客戶端網站是否正常工作。其中一項檢查旨在確保其SSL證書是最新的,或者在證書即將到期時提供警報。在沒有使用Python進行驗證的情況下從對等端獲得SSL證書

ssl軟件包提供了一種使用SSLSocket.getpeercert()方法獲取對等證書的方法,但只有在證書可以驗證的情況下才會返回證書。如果尚未獲得CA證書,則驗證不起作用。

我想要做的是獲得對等證書,即使它無法驗證,所以我能夠獲得所需的信息,既要獲得正確的CA證書,還要進行其他檢查,例如檢查域名匹配,到期日期是否在正確的範圍內。有沒有人知道獲取這些信息的方法?

pyCurlpyOpenSSL看起來像可能的候選人,但一直未能找到一個例子或設法讓他們返回證書。

乾杯

回答

3

它可能會使用一個shell腳本來獲取證書,然後使用Python遍歷證書的輸出文件。例如:

$ openssl s_client -connect host:port -showcerts > certfile 

可能工作。你也可以閱讀pyOpenSSL的Connection對象的文檔,其中有一個get_peer_certificate()方法:我沒有用過pyOpenSSL模塊

http://packages.python.org/pyOpenSSL/openssl-connection.html#l2h-187

,但它可能是在Python藏在心裏你最好的選擇。

+0

感謝Kurt PyOpenSSL的建議運作良好。 – Tim 2011-04-07 14:44:58

相關問題