Derzeit wird das SSL-Zertifikat des Servers, den ich privat habe, mit "Let's Encrypt" festgelegt.
Let's Encrypt
benachrichtigt Sie per E-Mail über das Ablaufdatum des Zertifikats. Wenn es sich jedoch um eine E-Mail handelt, kann es sein, dass es mit anderen E-Mails vergraben ist und die Bestätigung möglicherweise nicht erfolgt.
** Wenn Sie es automatisch aktualisieren, ja! Ich denke, es gibt so etwas wie **, aber dieses Mal werde ich es ignorieren
AWS
https://github.com/nnsnodnb/slackbot_ssl_expiration
Bitte setzen Sie "Bots" in "Apps & Integrationen"
requirements.txt
appdirs==1.4.3
packaging==16.8
pyparsing==2.2.0
requests==2.13.0
six==1.10.0
slacker==0.9.42
bot.py
from slacker import Slacker
import datetime
import socket
import ssl
import slack_settings #Slack im selben Verzeichnis_settings.Platziere py
slack = Slacker(slack_settings.SLACK_API_TOKEN)
def ssl_valid_time_remaining(hostname):
expires = ssl_expiry_datetime(hostname)
return expires - datetime.datetime.utcnow()
def ssl_expires_in(hostname, buffer_days=7): #Frist 7 Tage im Voraus
remaining = ssl_valid_time_remaining(hostname)
if remaining < datetime.timedelta(days=0):
raise AlreadyExpired("Cert expired %s days ago" % remaining.days)
elif remaining < datetime.timedelta(days=buffer_days):
return True
else:
return False
def ssl_expiry_datetime(hostname):
ssl_date_fmt = r'%b %d %H:%M:%S %Y %Z'
context = ssl.create_default_context()
conn = context.wrap_socket(
socket.socket(socket.AF_INET),
server_hostname=hostname,
)
conn.settimeout(3.0)
conn.connect((hostname, 443))
ssl_info = conn.getpeercert()
return datetime.datetime.strptime(ssl_info['notAfter'], ssl_date_fmt) # ssl_info['notAfter']Ist das Ablaufdatum des Zertifikats
def post_slack(hostname):
message = '@channel https://' + hostname + ' '
if ssl_expires_in(hostname):
message += 'Es ist an der Zeit, loszuwerden'
else:
message += 'Ist noch innerhalb der Frist'
#Die Methoden hier verwenden das Slacker-Paket
slack.chat.post_message(
'#expiration',
message,
as_user=True,
link_names=True
)
def execute(event, context):
post_slack('<YOUR DOMAIN>')
slack_setting.py
SLACK_API_TOKEN = ''
$ python bot.py
Diesmal war Herr Yo Watanabe wieder für die Benachrichtigung verantwortlich.
In der lokalen Umgebung sind die folgenden Befehle usw. recht gut:
Unmittelbare Umwelt
$ pip install -r requirements.txt
Da die Bibliothek in AWS Lambda nicht erkannt wird, müssen Sie die gesamte externe Bibliothek hochladen.
Speichern Sie die externe Bibliothek im Projektverzeichnis
$ pip install <LIBRARY_NAME> -t .
Wenn Sie so etwas tun, wird es im Projektverzeichnis gespeichert. Es ist jedoch mühsam, es einzeln zu tun, also habe ich Folgendes getan.
$ pip freeze > requirements.txt # requirements.Ohne txt
$ pip install -r requirements.txt -t .
Dann zip und hochladen
$ zip -r bot.zip * # bot.zip ist dein Lieblingsname
Da "bot.zip" im Projektverzeichnis erstellt wird, wählen Sie ".ZIP-Datei hochladen", um "bot.zip" hochzuladen.
Wenn die Einstellungen korrekt sind, wird Slack zur eingestellten Zeit benachrichtigt! In meiner Umgebung wird Herr Yo Watanabe Sie von Montag bis Freitag 2:00 Uhr wie oben erwähnt informieren! !!