Python验证证书文件合法性:代码示例与详解
可以使用Python的ssl模块来验证证书文件的合法性。下面是一个示例代码:
import ssl
import socket
def check_certificate(certificate_file):
try:
# 创建SSL上下文
context = ssl.create_default_context()
# 加载证书文件
context.load_verify_locations(cafile=certificate_file)
# 创建SSL套接字
with context.wrap_socket(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as s:
# 连接到目标服务器(可以是任何使用SSL的服务器)
s.connect(('www.example.com', 443))
# 获取服务器的证书链
cert = s.getpeercert()
# 验证证书链
ssl.match_hostname(cert, 'www.example.com')
# 证书合法
return True
except ssl.SSLError:
# 证书不合法
return False
# 调用函数进行验证
result = check_certificate('certificate.pem')
print(result)
在上面的示例代码中,我们首先创建一个SSL上下文,然后加载证书文件。接下来,我们创建一个SSL套接字,并使用该套接字连接到目标服务器。然后,我们获取服务器的证书链,并使用ssl.match_hostname函数验证证书链的合法性。如果证书合法,函数返回True;否则,返回False。
请注意,上述代码仅验证了证书链的合法性,并没有验证证书的有效期、域名等其他属性。如果需要更详细的验证,可以使用ssl.get_server_certificate函数获取证书的详细信息,并根据需要进行验证。
原文地址: https://www.cveoy.top/t/topic/fPYI 著作权归作者所有。请勿转载和采集!