Check SSL details
This commit is contained in:
parent
c7fd1da457
commit
afcda27417
50
code/Python/ssl_expiry_datetime.py
Normal file
50
code/Python/ssl_expiry_datetime.py
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
"""
|
||||||
|
https://stackoverflow.com/questions/41620369/how-to-get-ssl-certificate-details-using-python
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
import socket
|
||||||
|
import ssl
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
domains = [
|
||||||
|
'iiiypuk.me',
|
||||||
|
'a2s.su',
|
||||||
|
'ya.ru'
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def ssl_expiry_datetime(hostname):
|
||||||
|
ssl_dateformat = r'%b %d %H:%M:%S %Y %Z'
|
||||||
|
|
||||||
|
context = ssl.create_default_context()
|
||||||
|
context.check_hostname = False
|
||||||
|
|
||||||
|
conn = context.wrap_socket(
|
||||||
|
socket.socket(socket.AF_INET),
|
||||||
|
server_hostname=hostname,
|
||||||
|
)
|
||||||
|
|
||||||
|
# 5 second timeout
|
||||||
|
conn.settimeout(5.0)
|
||||||
|
|
||||||
|
conn.connect((hostname, 443))
|
||||||
|
ssl_info = conn.getpeercert()
|
||||||
|
|
||||||
|
# Python datetime object
|
||||||
|
return datetime.datetime.strptime(ssl_info["notAfter"], ssl_dateformat)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
for value in domains:
|
||||||
|
now = datetime.datetime.now()
|
||||||
|
try:
|
||||||
|
expire = ssl_expiry_datetime(value)
|
||||||
|
diff = expire - now
|
||||||
|
print(
|
||||||
|
"Domain name: {} Expiry Date: {} Expiry Day: {}".format(
|
||||||
|
value, expire.strftime("%Y-%m-%d"), diff.days
|
||||||
|
)
|
||||||
|
)
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
Loading…
Reference in New Issue
Block a user