python/기타

python 으로 SSL 만료기간 체크

zoomer75 2021. 12. 8. 18:25

다양한 사이트를 제작하는 일을 하다보니 SSL 만료기간을 고객쪽에서 놓치는 경우가 있다.

 

도메인 만료기간 체크처럼 SSL 도 만료기간을 체크할 수 있다.

 

import time
from datetime import datetime
import ssl, socket

def getCertification():
    try:
        domain = 'aaa.co.kr:443'
        host, port = domain.split(":")
        port = int(port)
        context = ssl.create_default_context()
        conn = context.wrap_socket(socket.socket(socket.AF_INET), server_hostname=host)
        conn.connect((host, port))
        cert = conn.getpeercert()

        if not [x[1] for x in cert["subjectAltName"] if x[1] == host]:
            # Host not found
            return "host not found"
        else:
            startdate = datetime.strptime(cert["notBefore"], "%b %d %H:%M:%S %Y %Z")
            startDateTimeStamp = time.mktime(startdate.timetuple())
            expire_date = datetime.strptime(cert["notAfter"], "%b %d %H:%M:%S %Y %Z")
            expireDateTimeStamp = time.mktime(expire_date.timetuple())
            nowdate = datetime.now()
            start_in = nowdate - startdate
            expire_in = expire_date - nowdate
            return {'startDateTimeStamp' : int(startDateTimeStamp), 'expireDateTimeStamp' : int(expireDateTimeStamp) , 'leftDays' : expire_in.days}

    except Exception as e:
        return str(e)

domain 은 https://aaa.co.kr 이런 형태가 아닌 aaa.co.kr:443 이런 형태로 지정해야 한다. 

 

대부분의 ssl 이 443 을 사용하지만 443 이 아닌 포트를 사용시 사용중인 포트명을 기재하면 된다.

 

도메인 만료기간과 마찬가지로 주기적으로 ssl 만료기간을 체크해서 관리자에게 알림을 주면 된다.

 

- 끝 - 

반응형