La première étape consiste à générer une clé au moyen d'un algorithme asymétrique.
Génération d'une clé RSA de 2048 bits :
openssl genrsa -out /etc/ssl/private/server.key 2048
Génération d'une clé ECDSA en utilisant la courbe sect571r1 (NIST/SECG curve over a 571 bit binary field) :
openssl ecparam -list_curves
openssl ecparam -out /etc/ssl/private/server.key -name sect571r1 -genkey
Une fois la clé en poche on peut générer une CSR (Certificate Signing Request) basée sur cette clé :
openssl req -sha256 -new -key /etc/ssl/private/server.key -out /etc/ssl/private/server.csr
S'il nécessaire/utile d'ajouter un SubjectAltName (notamment pour spécifier plusieurs noms d'hôtes valides pour un seul et même certificat), il faut modifier /etc/ssl/openssl.cnf pour qu'il prenne en compte ce réglage (⇒ http://wiki.cacert.org/FAQ/subjectAltName).
Le CSR généré doit être transmis à une autorité de certification qui y répondra en joignant un certificat.
blah
L'article de l'OpSec de Mozilla dans MISC recommande d'aligner la taille des paramètres Diffie-Hellman sur celle de la clé RSA (si on a choisi une clé RSA).
openssl dhparam -2 -out /etc/ssl/private/server.dh 4096
⇒ SSL Shopper fournit quelques outils web rapides et simples : http://www.sslshopper.com/ssl-certificate-tools.html ; tous ces outils sont basés sur des commandes OpenSSL simples, détaillées sur le site web.
openssl req -in mycsr.csr -noout -text
openssl x509 -in certificate.crt -text -noout
openssl s_client -connect www.mouet-mouet.net:443
Génerer une clé RSA de 2048 bits, et la stocker dans un fichier chiffré en utilisant AES 256 (protégé par une phrase de passe) :
openssl genrsa -aes256 -out ca.key 2048
Générer un certificat basé sur cette clé (certificat racine) :
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
Une fois un CSR généré (à partir d'une clé elle aussi générée), il doit être signé par une autorité de confiance:
openssl x509 -req -sha256 -days 730 -in host.network.tld.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out host.network.tld.crt
Le numéro de série doit être différent pour chaque certificat signé avec cette clé. On peut incrémenter un numéro ou prendre un hachage du CSR…
Le certificat racine doit être distribué pour pouvoir être utilisé comme base de validation des certificats signés.
blah