L’utilisateur va recevoir le certificat correspondant au serveur. Il va le valider en remontant les certificats jusqu’à ce qu’il arrive à un certificat connu (inclus dans le logiciel client). Tous les certificats inconnus seront vérifiés à l’aide des requêtes OCSP. Le client enverra au serveur de gestion de clés l’ID du certificat ainsi que des hash. Le serveur de gestion de clés va comparer ces hash avec ceux qu’il a en base de données et renverra si le certificat est valide ainsi que son certificat.
Génération d’un certificat auto-signé :
$ openssl genrsa -out example.key 1024
$ openssl req -new -key example.key -out example.csr
$ openssl x509 -req -days 365 -in example.csr -signkey example.key -out example.crt
Signer un certificat client avec une autorité :
$ openssl x509 -req -days 365 \
-in client.csr -CA ca.crt -CAkey ca.key \
-out client.cert
Création d’un fichier PEM avec le certificat et la clé :
$ cat ip42.eu.key ip42.eu.crt > ip42.eu.pem
Se connecter à un serveur pour débugger SSL :
$ openssl s_client -connect example.org:443
Vérifier le certificat X509 d’un serveur :
$ openssl s_client -connect example.org:443 | openssl x509 -text -noout
Afficher une requête de certificat :
$ openssl req -noout -text -in example.csr
Afficher un certificat :
$ openssl x509 -noout -text -in example.crt
Créer et signer un certificat avec “Subject Alternative Name” :
$ openssl genrsa -out server.key 2048
$ openssl req -new -sha256 \
-key server.key \
-subj "/CN=server.domain" \
-reqexts SAN \
-config <(cat /etc/pki/tls/openssl.cnf \
<(printf "[SAN]\nsubjectAltName=DNS:server.domain")) \
-out server.csr
$ openssl x509 -req -days 365 \
-extensions SAN \
-extfile <(cat /etc/pki/tls/openssl.cnf \
<(printf "[SAN]\nsubjectAltName=DNS:server.domain")) \
-in server.csr \
-CA ca.crt -CAkey ca.key \
-out "server.crt"