[bash] Come determinare la data di scadenza cert SSL da un certificato codificato PEM?


2 Answers

Se vuoi solo sapere se il certificato è scaduto (o lo farà entro i successivi N secondi), l' -checkend <seconds> per openssl x509 ti dirà:

if openssl x509 -checkend 86400 -noout -in file.pem
then
  echo "Certificate is good for another day!"
else
  echo "Certificate has expired or will do so within 24 hours!"
  echo "(or is invalid/not found)"
fi

Questo evita di dover fare confronti di data / ora.

openssl restituirà un codice di uscita di 0 (zero) se il certificato non è scaduto e non lo farà per i successivi 86400 secondi. Se il certificato è scaduto o lo ha già fatto - o qualche altro errore come un file non valido / inesistente - il codice di ritorno è 1 .

(Naturalmente, si presuppone che l'ora e la data siano impostate correttamente)

Question

Se ho il file attuale e una shell Bash in Mac o Linux, come posso interrogare il file cert per quando scadrà? Non un sito Web, ma in realtà il file del certificato stesso, supponendo che disponga dei file csr, key, pem e chain.




Se (per qualche motivo) si desidera utilizzare un'applicazione GUI in Linux, utilizzare gcr-viewer (nella maggior parte delle distribuzioni è installato dal pacchetto gcr (altrimenti nel pacchetto gcr-viewer ))

gcr-viewer file.pem
# or
gcr-viewer file.crt



Per MAC OSX (El Capitan) Questa modifica dell'esempio di Nicholas ha funzionato per me.

for pem in /path/to/certs/*.pem; do
    printf '%s: %s\n' \
        "$(date -jf "%b %e %H:%M:%S %Y %Z" "$(openssl x509 -enddate -noout -in "$pem"|cut -d= -f 2)" +"%Y-%m-%d")" \
    "$pem";
done | sort

Uscita di esempio:

2014-12-19: /path/to/certs/MDM_Certificate.pem
2015-11-13: /path/to/certs/MDM_AirWatch_Certificate.pem

macOS non ha gradito i --date= o --iso-8601 sul mio sistema.




Related