我正在编写一个脚本,通过 HTTPS 连接到一堆 URL,下载他们的 SSL 证书并提取 CN。一切正常,除非我偶然发现一个带有无效 SSL 证书的网站。我绝对不在乎证书是否有效。我只想要 CN,但如果证书未经过验证,Python 会顽固地拒绝提取证书信息。有什么办法可以解决这种极其愚蠢的行为吗?哦,我只使用内置的套接字和 ssl 库。我不想使用像 M2Crypto 或 pyOpenSSL 这样的第三方库,因为我试图让脚本尽可能地便携。
以下是相关代码:
file = open("list.txt", "r")
for x in file:
server = socket.getaddrinfo(x.rstrip(), "443")[0][4][0]
sslsocket = socket.socket()
sslsocket.connect((server, 443))
sslsocket = ssl.wrap_socket(sslsocket, cert_reqs=ssl.CERT_REQUIRED, ca_certs="cacerts.txt")
certificate = sslsocket.getpeercert()`