自己署名 SSL 証明書のフィンガープリントを比較することに興味があります。そのために、次のことを考えました。
import ssl, socket
from m2crypto import X509
cert_pem = ssl.get_server_certificate(addr)
x509 = X509.load_cert_string(cert_pem, X509.FORMAT_PEM)
fp = x509.get_fingerprint('sha1')
if fp==allowed_fp:
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(addr)
しかし、私が見るバイアスは、検証と接続の間で証明書が変わる可能性があるということです。同じ接続用途を実際に使用するとよいでしょうssl.get_server_certificate
。指紋を比較するより良い方法はありますか?