在Python中,可以使用ssl
和socket
模块来检查域名是否有SSL证书。下面是一个示例代码:
import ssl
import socket
def check_ssl_certificate(domain):
try:
# 创建SSL上下文
context = ssl.create_default_context()
# 创建一个socket连接
with socket.create_connection((domain, 443)) as sock:
# 建立安全连接
with context.wrap_socket(sock, server_hostname=domain) as ssock:
# 获取证书信息
cert = ssock.getpeercert()
# 检查证书是否存在
if cert:
print("域名 {} 存在有效的SSL证书。".format(domain))
# 可以进一步处理证书信息
# 例如,打印证书的颁发机构、过期日期等
print("颁发机构:", cert['issuer'])
print("过期日期:", cert['notAfter'])
else:
print("域名 {} 不存在有效的SSL证书。".format(domain))
except ssl.SSLError as e:
print("SSL错误:", e)
except socket.error as e:
print("Socket错误:", e)
# 调用函数检查域名是否有SSL证书
check_ssl_certificate("example.com")
上述代码中,首先创建了一个SSL上下文,然后使用socket.create_connection()
函数创建一个socket连接。接下来,使用context.wrap_socket()
函数建立安全连接,并获取服务器的证书信息。如果证书存在,则打印相关信息;如果证书不存在,则打印相应提示。
请注意,以上代码仅用于检查域名是否存在有效的SSL证书,并不涉及证书的验证和信任链的验证。在实际应用中,可能需要更复杂的逻辑来处理证书验证和信任链验证。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云