Python 获取SSL证书链并通过PyOpenSSL查找过期日期

Python 获取SSL证书链并通过PyOpenSSL查找过期日期,python,python-2.7,openssl,pyopenssl,Python,Python 2.7,Openssl,Pyopenssl,我试图通过Python的OpenSSL库查找并计算SSL证书的过期日期。我是使用这个库的新手,下面编写了计算过期日期的代码。但是,我总是拿不到证书。我只是不想运行这段代码,而是安全地运行它。有人能看看我是否遗漏了任何一步吗?谢谢 hostname = socket.getfqdn() port = socket.gethostname().split('.')[0] if port == 'master': port = 8140 else: port = 443 contex

我试图通过Python的OpenSSL库查找并计算SSL证书的过期日期。我是使用这个库的新手,下面编写了计算过期日期的代码。但是,我总是拿不到证书。我只是不想运行这段代码,而是安全地运行它。有人能看看我是否遗漏了任何一步吗?谢谢

hostname = socket.getfqdn()
port = socket.gethostname().split('.')[0]
if port == 'master':
    port = 8140
else:
    port = 443

context = SSL.Context(SSL.SSLv23_METHOD)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ssl_sock = SSL.Connection(context, sock)
ssl_sock.settimeout(10)
ssl_sock.connect((hostname, port))
ssl_sock.do_handshake()

certs = ssl_sock.get_peer_cert_chain()

if certs is not None:
    for cert in certs:
        x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, cert)
        subject = x509.get_subject()
        common_name = str(subject.CN)
        expire_date = x509.get_notAfter()

        datetimeformat = '%Y-%m-%d %H:%M:%S'

        current_date = datetime.datetime.now()
        cert_status = datetime.datetime.strptime(expire_date, datetimeformat) - datetime.datetime.strptime(
                                                                                        current_date, datetimeformat)
        cert_status = int(cert_status.days)
        dispatch_value('ssl_check', common_name, cert_status, 'gauge')