在 Python 中,可以使用ssl模块来验证证书的合法性。具体步骤如下:

  1. 导入ssl模块:import ssl

  2. 创建一个SSLContext对象:context = ssl.create_default_context()

  3. 设置验证模式为CERT_REQUIRED,即需要验证证书:context.check_hostname = True

  4. 调用SSLContext对象的load_default_certs()方法加载默认的证书信任链:context.load_default_certs()

  5. 创建一个socket对象,并使用SSLContext对象进行包装:sock = context.wrap_socket(socket.socket(socket.AF_INET, socket.SOCK_STREAM))

  6. 使用socket对象连接到目标主机:sock.connect(('hostname', port))

  7. 调用getpeercert()方法获取服务器证书:cert = sock.getpeercert()

  8. 调用ssl模块的ssl.match_hostname()方法验证证书的主机名是否匹配:ssl.match_hostname(cert, 'hostname')

完整代码示例:

import socket
import ssl

context = ssl.create_default_context()
context.check_hostname = True
context.load_default_certs()

sock = context.wrap_socket(socket.socket(socket.AF_INET, socket.SOCK_STREAM))
sock.connect(('hostname', port))

cert = sock.getpeercert()
ssl.match_hostname(cert, 'hostname')

其中,hostname为目标主机的主机名,port为目标主机的端口号。如果证书合法,ssl.match_hostname()方法将不会抛出异常;如果证书不合法,将会抛出ssl.CertificateError异常。

Python 检查 SSL 证书有效性教程

原文地址: https://www.cveoy.top/t/topic/fPYF 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录