web-dev-qa-db-fra.com

Comment générer un certificat openssl avec une expiration inférieure à un jour?

J'essaie de créer un certificat d'entité finale signée CA à l'aide des commandes openssl comme indiqué ci-dessous, sous Linux:

# openssl genrsa -des3 -out clientkey.pem 2048
# openssl req -new -key clientkey.pem -out clientcert.csr
# cp clientkey.pem clientkey.pem.org
# openssl rsa -in clientkey.pem.org -out clientkey.pem
# openssl x509 -req -days 1 -in clientcert.csr -out clientcert.pem -CA cacert.pem -CAkey cakey.pem -CAcreateserial

Est-il possible de spécifier le délai d'expiration en heures, au lieu de jours? J'ai besoin de générer des certificats avec, disons, une heure d'expiration, pour certains tests.

La commande openssl semble prendre en charge certaines options pour spécifier la date de début et la date de fin, mais je ne suis pas en mesure de comprendre comment utiliser cela. (Je suppose que la date de fin peut prendre en charge la spécification de la date et de l'heure).

#openssl x509 -req -startdate 120814050000Z -enddate 120814060000Z -in clientcert.csr -out clientcert.pem -CA cacert.pem -CAkey cakey.pem -CAcreateserial

unknown option 120814050000Z
usage: x509 args
.
.
-startdate      - notBefore field
-enddate        - notAfter field
.
.
-days arg       - How long till expiry of a signed certificate - def 30 days
22
m.divya.mohan

Ou voici une autre façon que j'ai trouvé de travailler

Dire que je veux que mon certificat expire dans 10 minutes comme test

La date du jour est le 17 février
L'heure actuelle est 16h40

J'ai d'abord réglé la date de mon système sur -1 jour: 16 février
J'ai réglé mon horloge système sur +10 minutes: 16 h 50.

Je crée mon certificat en utilisant openssl x509 expirer dans 1 jour, ce qui signifie vraiment expirer aujourd'hui Feb 17th

openssl x509 -req -days 1 -in clientcert.csr -signkey cert.key -out ssl.crt

J'ai ensuite réinitialisé l'horloge et l'heure de mon système à la date et à l'heure réelles et le tour est joué, vous avez un certificat qui va expirer dans 10 minutes!

Évidemment, ce n'est pas la vraie façon de faire les choses, mais c'est agréable et facile pour créer des certificats auto-signés pour une utilisation par les développeurs.

0
Tom Lee

Les options -startdate et -enddate pour la commande x509 sont des options d'affichage. Vous pouvez définir des heures de début et de fin spécifiques à l'aide de la commande ca à la place pour signer le certificat.

Essayez quelque chose comme ceci:

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
30
runfa

Essayez gossl qui permet de spécifier la date de début et la durée de validité du certificat dans différentes unités de temps.

Je l'ai développé pour surmonter les limites de la ligne de commande openssl. L'outil est léger, implémenté dans Go, sans dépendances, sous MIT license.

3
Grzegorz Luczywo

Vous pouvez définir le -days option à 0:

openssl x509 -req -days 0 -in clientcert.csr -signkey cert.key -out ssl.crt

Cela créera un certificat avec un notBefore et notAfter égal à l'heure actuelle (c'est-à-dire que votre certificat expirera immédiatement).

0
assylias