Получить цепочку сертификатов SSL и найти дату истечения срока действия через PyOpenSSL - PullRequest
1 голос
/ 27 марта 2019

Я пытаюсь найти рассчитать дату истечения срока действия SSL-сертификатов через библиотеку OpenSSL Python.Я новичок в использовании этой библиотеки и нижеприведенный код для расчета срока годности.Но я всегда получаю сертификаты как None.Я просто не хочу запускать этот код, а запустить его также безопасно.Может кто-нибудь взглянуть и подсказать, пропускаю ли я какой-либо шаг?Спасибо

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')
...