Table des matières

Utilisation

Certificats X.509 pour TLS/SSL

Génération d'un certificat

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.

Autorités de certification

Interne (PKI)
Externes
autosignature

blah

Paramètres Diffie-Hellman

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

Vérifications

⇒ 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.

Décoder un CSR

openssl req -in mycsr.csr -noout -text

Décoder un certificat X.509

openssl x509 -in certificate.crt -text -noout

Valider une installation TLS/SSL

openssl s_client -connect www.mouet-mouet.net:443

PKI

Autorité de certification

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

Signature d'un CSR

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…

Distribution du certificat racine

Le certificat racine doit être distribué pour pouvoir être utilisé comme base de validation des certificats signés.

Configuration

blah

Bibliographie