我試圖獲得證書頒發者信息(通用名稱),但鏈接中的代碼不適用於某些URL。Python使用ssl.getpeercert()從URL獲取通用名稱
How can i get Certificate issuer information in python?
import ssl, socket
hostname = 'google.com'
ctx = ssl.create_default_context()
s = ctx.wrap_socket(socket.socket(), server_hostname=hostname)
s.connect((hostname, 443))
cert = s.getpeercert()
subject = dict(x[0] for x in cert['subject'])
issued_to = subject['commonName']
>>> issued_to
u'*.google.com'
例如,我試圖主機名 「cds.ca」,它說
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)
,但我仍然可以使用Internet Explorer(* .cds.ca獲得通用名)
所以我認爲我應該使用自己的證書(.cer)而不是使用getpeercert(),那麼應該如何更改該行?
或者,有沒有其他方法可以用我自己的證書文件來實現CN?
你是問如何確保該證書驗證,以獲得成功CN或即使證書驗證失敗,如何獲得CN? –
兩者都可以。我試了後者(查找了許多關於忽略證書驗證的問題),但是我失敗了:( – Sean
從網站獲取CN(與Internet Explorer顯示的相同)是我想要的。 – Sean