[PYTHON] Script pour obtenir la date d'expiration du certificat SSL

Je l'ai mentionné ici. http://qiita.com/uemura/items/a3a0937f77494e62213c

En supposant d'importer et d'utiliser

Lorsqu'il est utilisé à partir d'une commande

$ ./cert_expires.py example.com google.com
example.com: 1093 days
google.com: 76 days

sert_expires.py


#!/usr/bin/env python


import sys
import re
import subprocess
import datetime


def parse_result_date_string(date_string):
    """
    convert date string to datetime
    >>> date_string = "Feb  2 05:47:50 2015 GMT"
    >>> d = parse_result_date_string(date_string)
    >>> d
    datetime.datetime(2015, 2, 2, 5, 47, 50)
    """
    d = datetime.datetime.strptime(date_string, '%b %d %H:%M:%S %Y %Z')
    return d


re_start = re.compile(r'Not Before: (.+)')
re_end = re.compile(r'Not After : (.+)')


def get_date_strings_from_result(result):
    """
    :return: cert start date, cert expire date
    >>> text = "Not Before: Feb  2 05:47:47 2015 GMT\\n" \\
    ...        "Not After : Feb  4 16:03:29 2016 GMT"
    >>> get_date_strings_from_result(text)
    ('Feb  2 05:47:47 2015 GMT', 'Feb  4 16:03:29 2016 GMT')
    """
    rr_start = re_start.search(result)
    rr_end = re_end.search(result)
    return rr_start.group(1) if rr_start else None, \
           rr_end.group(1) if rr_end else None


def get_cert_start_expire_date(domain):
    """
    :return: cert start date, cert expire date
    """
    command = "openssl s_client -connect {}:443 < /dev/null " \
              "2> /dev/null | openssl x509 -text | grep Not"

    command = command.format(domain)
    out = subprocess.check_output(command, shell=True)
    ss, es = get_date_strings_from_result(out)
    return parse_result_date_string(ss), parse_result_date_string(es)


def get_cert_expire_delta(domain):
    """
    time delta cert expire date and now
    """
    start_date, expire_date = get_cert_start_expire_date(domain)
    return expire_date - datetime.datetime.now()


def main():
    for domain in sys.argv[1:]:
        delta = get_cert_expire_delta(domain)
        print('{}: {} days'.format(domain, delta.days))


if __name__ == '__main__':
    main()

Recommended Posts

Script pour obtenir la date d'expiration du certificat SSL
Obtention de la date d'expiration du certificat SSL
Script pour changer la description de fasta
Un mémo d'un programme qui récupère une date à deux chiffres avec javascript, Ruby, Python ou un script shell.
Obtenez la date de mise à jour du fichier de mémorandum Python.
Script Python pour obtenir une liste d'exemples d'entrée pour le concours AtCoder
Modèle de script python pour lire le contenu du fichier
Obtenez le chemin absolu du script en cours d'exécution
Récupérer le code retour d'un script Python depuis bat
Création d'un bot Slack qui confirme et notifie à AWS Lambda la date d'expiration d'un certificat SSL
L'histoire du passage de WoSign à Let's Encrypt pour un certificat SSL gratuit
Obtenez le nombre de chiffres
Essayez d'obtenir la liste des fonctions du paquet Python> os
J'ai essayé d'obtenir les informations de localisation du bus Odakyu
Je veux obtenir des informations sur le fonctionnement de Yahoo Route
Keras Je veux obtenir la sortie de n'importe quelle couche !!
Pour obtenir le nom de la primitive etc. généré immédiatement avant
Récupérez la source de la page à charger indéfiniment avec python.
[OCI] Script Python pour obtenir l'adresse IP d'une instance de calcul dans Cloud Shell
Je veux obtenir le nom de la fonction / méthode en cours d'exécution
Définit la date de la dernière modification du fichier enfant sur la date de modification du répertoire parent
Obtenez le nombre de vues de Qiita
Script Shell (Linux, macOS) qui affiche la date de la semaine dernière
J'ai essayé d'obtenir l'index de la liste en utilisant la fonction énumérer
Comment obtenir l'ID de Type2Tag NXP NTAG213 avec nfcpy
Branche conditionnelle en raison de l'existence d'un fichier de script shell
Obtenez la date de mise à jour du site au sérieux
[Python] Comment obtenir le premier et le dernier jour du mois
Obtenez le chemin du script en Python
Comment obtenir la version Python
Obtenir les attributs d'un objet
[Python] Obtenir la date de mise à jour d'un article d'actualité à partir de HTML
Comment obtenir les coordonnées de sommet d'une entité dans ArcPy
Il est étonnamment difficile d'obtenir une liste de la dernière date et heure de connexion des espaces de travail
Créez une fonction pour obtenir le contenu de la base de données dans Go
Supplément à l'explication de vscode
Obtenez le titre et la date de livraison de Yahoo! News en Python
PhytoMine-I a essayé d'obtenir les informations génétiques de la plante avec Python
J'ai essayé d'obtenir les résultats de Hachinai en utilisant le traitement d'image
Comment obtenir la différence de date et d'heure en secondes avec Python
Cliquez sur les liens Selenium afin d'obtenir les éléments des pages individuelles
[Linux] Une commande pour obtenir une liste des commandes exécutées dans le passé
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
Essayez d'obtenir l'état de la surface de la route en utilisant de grandes données de gestion de la surface de la route
J'ai essayé d'obtenir automatiquement le RSS de la chanson la plus populaire de l'iTunes Store
Obtenez le titre de la chanson à partir du titre de la vidéo que vous avez chanté
J'ai essayé d'obtenir les informations sur le film de l'API TMDb avec Python
Obtenez la valeur de retour d'un script shell externe (ls) avec python3
L'histoire d'essayer de reconnecter le client
10 méthodes pour améliorer la précision de BERT
Comment vérifier la version de Django
L'histoire de la mise en place de MeCab dans Ubuntu 16.04
Obtenez la liste des colonnes et la liste des données de CASTable
Obtenez les débats parlementaires via l'API
Obtenez le chemin d'accès au fichier d'unité systemd
Comment obtenir une sortie colorée sur la console
Obtenez la valeur de la couche intermédiaire de NN
Obtenez le dernier jour du mois spécifié