Prova gossl che consente di specificare la data di inizio e la durata della validità del certificato in varie unità di tempo.
L'ho sviluppato per superare i limiti della riga di comando openssl. Lo strumento è leggero, implementato in Go, senza dipendenze, con licenza MIT.
Le opzioni -startdate e -enddate per il comando x509 sono opzioni di visualizzazione. Puoi impostare un'ora di inizio e di fine specifica utilizzando invece il comando ca per firmare il certificato.
Prova qualcosa del genere:
openssl ca -config /etc/openssl.cnf -policy policy_anything -out clientcert.pem -startdate 120815080000Z -enddate 120815090000Z -cert ca.pem -keyfile cakey.pem -infiles clientcert.csr
Passaggio 1. Installa faketime
sudo apt-get install faketime
Passaggio 2. Genera certificato scaduto un giorno prima della data corrente.
faketime 'last friday 5 pm' /bin/bash -c 'openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 6 -nodes'
Passaggio 3 Verificare la data di validità del certificato
openssl x509 -noout -text -in cert.pem
Oppure ecco un altro modo in cui ho scoperto di funzionare
Diciamo che voglio che il mio certificato scada tra 10 minuti come test
La data attuale è il 17 febbraio
L'ora corrente è 16:40
Per prima cosa ho impostato la data del mio sistema su -1 giorno:16 febbraio
Ho impostato l'orologio di sistema su +10 min:16:50
Creo il mio certificato usando openssl x509
scadere tra 1 giorno, il che in realtà significa scadere oggi Feb 17th
openssl x509 -req -days 1 -in clientcert.csr -signkey cert.key -out ssl.crt
Quindi reimposto l'orologio e l'ora del mio sistema alla data e all'ora effettive e voilà hai un certificato che scadrà tra 10 minuti!
Ovviamente non è il vero modo di fare le cose, ma carino e facile per creare certificati autofirmati per l'uso da parte degli sviluppatori.