Advertisement
Guest User

Untitled

a guest
Aug 18th, 2017
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.90 KB | None | 0 0
  1. import socket
  2. import ssl, boto3
  3. import re,sys,os,datetime
  4.  
  5. def ssl_expiry_date(domainname='xxx.xxx.xxx.xxx'):
  6. ssl_date_fmt = r'%b %d %H:%M:%S %Y %Z'
  7. context = ssl.create_default_context()
  8. conn = context.wrap_socket(
  9. socket.socket(socket.AF_INET),
  10. server_hostname=domainname,
  11. )
  12. # 3 second timeout because Lambda has runtime limitations
  13. conn.settimeout(3.0)
  14. conn.connect((domainname, 443))
  15. ssl_info = conn.getpeercert()
  16. return datetime.datetime.strptime(ssl_info['notAfter'], ssl_date_fmt).date()
  17.  
  18. def ssl_valid_time_remaining(domainname='xxx.xxx.xxx.xxx'):
  19. """Number of days left."""
  20. expires = ssl_expiry_date(domainname='xxx.xxx.xxx.xxx')
  21. return expires - datetime.datetime.utcnow().date()
  22.  
  23. def sns_Alert(dName, eDays, sslStatus):
  24. sslStat = dName + ' SSL certificate will be expired in ' + eDays +' days!! '
  25. snsSub = dName + ' SSL Certificate Expiry ' + sslStatus + ' alert'
  26. print(sslStat)
  27. print (snsSub)
  28. response = client.publish(
  29. TargetArn="arn:aws:sns:us-west-2:1111111111:cert_check",
  30. Message= sslStat,
  31. Subject= snsSub
  32. )
  33.  
  34.  
  35. #####Main Section
  36. client = boto3.client('sns')
  37. def lambda_handler(event, context):
  38. f = ['xxx.xxx.xxx.xxx']
  39. for dName in f:
  40. expDate = ssl_valid_time_remaining(dName.strip())
  41. (a, b) = str(expDate).split(',')
  42. (c, d) = a.split(' ')
  43. if int(c) < 40:
  44. sns_Alert(dName, str(c), 'Critical')
  45. elif int(c) == 60:
  46. sns_Alert(dName, str(c), 'Warning')
  47. elif int(c) == 90:
  48. sns_Alert(dName, str(c), 'Warning')
  49. else:
  50. number = '+1777777'
  51. sns.publish(PhoneNumber = number, Message='cert checker failed' )
  52. exit()
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61. ########## ERROR ###########
  62.  
  63.  
  64.  
  65. {
  66. "errorMessage": "[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)",
  67. "errorType": "SSLError",
  68. "stackTrace": [
  69. [
  70. "/var/task/lambda_function.py",
  71. 40,
  72. "lambda_handler",
  73. "expDate = ssl_valid_time_remaining(dName.strip())"
  74. ],
  75. [
  76. "/var/task/lambda_function.py",
  77. 20,
  78. "ssl_valid_time_remaining",
  79. "expires = ssl_expiry_date(domainname='35.167.132.157')"
  80. ],
  81. [
  82. "/var/task/lambda_function.py",
  83. 14,
  84. "ssl_expiry_date",
  85. "conn.connect((domainname, 443))"
  86. ],
  87. [
  88. "/var/lang/lib/python3.6/ssl.py",
  89. 1093,
  90. "connect",
  91. "self._real_connect(addr, False)"
  92. ],
  93. [
  94. "/var/lang/lib/python3.6/ssl.py",
  95. 1084,
  96. "_real_connect",
  97. "self.do_handshake()"
  98. ],
  99. [
  100. "/var/lang/lib/python3.6/ssl.py",
  101. 1061,
  102. "do_handshake",
  103. "self._sslobj.do_handshake()"
  104. ],
  105. [
  106. "/var/lang/lib/python3.6/ssl.py",
  107. 683,
  108. "do_handshake",
  109. "self._sslobj.do_handshake()"
  110. ]
  111. ]
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement