ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • python 으로 SSL 만료기간 체크
    python/기타 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 만료기간을 체크해서 관리자에게 알림을 주면 된다.

     

    - 끝 - 

    반응형

    댓글

미래를 준비하는 개발자 by zoomer