import datetime, OpenSSL, socket, ssl def ssl_wrap_socket(sock, server_hostname): context = ssl.SSLContext(ssl.PROTOCOL_SSLv23) if ssl.HAS_SNI: return context.wrap_socket(sock, server_hostname=server_hostname) return context.wrap_socket(sock) def getRemoteCert(host, port): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((host, 443)) sslSocket = ssl_wrap_socket(s, host) return sslSocket.getpeercert() def getRemoteExpiry(host,port): return datetime.datetime.strptime(str(OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, getRemoteCert(host, port)).get_notAfter().decode("UTF-8")), "%Y%m%d%H%M%SZ")