web-dev-qa-db-fra.com

Pourquoi openssl ignore -days pour la date d'expiration du certificat auto-signé?

J'ai un script bash qui génère un self-signed certificat et fonctionne parfaitement:

#! /bin/bash

# Generate self signed root CA cert
openssl req -nodes -x509 -days 358000 -newkey rsa:2048 -keyout ca.key -out ca.crt -subj "/C=IR/ST=TEH/L=Torento/O=CTO/OU=root/CN=es.example.com/[email protected]"

# Generate server cert to be signed
openssl req -nodes -newkey rsa:2048 -days 358000 -keyout server.key -out server.csr -subj "/C=IR/ST=TEH/L=Torento/O=CTO/OU=server/CN=es.example.com/[email protected]"

# Sign the server cert
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt

# Create server PEM file
cat server.key server.crt > server.pem


# Generate client cert to be signed
openssl req -nodes -newkey rsa:2048 -days 358000 -keyout client.key -out client.csr -subj "/C=IR/ST=TEH/L=Torento/O=CTO/OU=client/CN=es.example.com/[email protected]"

# Sign the client cert
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAserial ca.srl -out client.crt

# Create client PEM file
cat client.key client.crt > client.pem

Lorsque je vérifie le délai d'expiration du client.pem, il indique l'heure d'expiration au 10 août:

$ openssl x509 -enddate -noout -in client.pem
notAfter=Aug 10 12:32:07 2018 GMT

Quel est le problème avec la date d'expiration?

7
ALH

La validité est définie avec openssl x509 et pas avec openssl req. Si vous mettez le -days option avec x509 commande, cela fonctionnera.

Vous obtenez le 30/08 car il n'y a pas de -days option qui remplace la validité par défaut du certificat de 30 jours, comme indiqué dans x509 la page de manuel:

-arg arg jours
spécifie le nombre de jours de validité d'un certificat. La valeur par défaut est de 30 jours.

Remarque, la génération d'un certificat avec une validité de 358000 jours (980 ans!) Est trop longue si vous voulez une sécurité raisonnable.

12
oliv