2015-08-20 78 views
2

雖然試圖通過使用Python的XML-RPC庫與服務器進行通信:如何忽略SSL證書名稱不匹配在Python(XML-RPC)

import xmlrpc.client 
url = 'https://12345/' 

api = xmlrpc.client.ServerProxy(url) 
print(api.system.listMethods()) 

我收到此錯誤:

ssl.py in match_hostname ssl.CertificateError: hostname '12345' doesn't match '*.hostname.com' 

顯然,我可以改變ssl.py的來源來忽略這個,但有沒有更好的方法,像我可以設置等參數?

+1

忽略不匹配的主機名幾乎與根本不做證書驗證一樣糟糕。攻擊者現在可以使用公共CA簽署的任何證書進行中間人攻擊,而不管證書的主機名是什麼。這樣的證書是微不足道的。您應該改爲針對您在證書中期望的主機名進行檢查。 –

+1

@SteffenUllrich +1。 OTOH你可以通過HTTP進行通信來忽略這個 –

回答

1

由於顯而易見的原因,xmlrpc庫中沒有這樣的設置。因此,完成此操作的唯一方法是從ssl.py中刪除驗證。

注意:我正在編寫一個真實世界的系統,通過HTTPS與外部提供者進行通信。但在我們能夠實現它之前,我們必須使用他們的開發者服務器進行測試,這些開發者具有不同的主機名,因此證書錯誤。所以沒有安全風險,因爲只使用開發者服務器證書和一些虛擬數據。