====== 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) :
* d'abord on choisit une courbe dans la liste des courbes supportées par OpenSSL :
openssl ecparam -list_curves
* ensuite on génère la clé :
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 ==
* CACERT est une autorité de certification communautaire (et gratuite), non reconnue par Microsoft Windows et Mozilla Firefox, mais parfois/souvent reconnue par les systèmes UNIX libres (distribution basées sur GNU et Linux, *BSD, etc.) ;
* StartSSL est une startup Israélienne qui distribue des certificats X509 gratuits pour une utilisation non-commerciale ;
* etc.
== 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 ======
* site web officiel : http://www.openssl.org/ ;
* Wikipedia : http://en.wikipedia.org/wiki/OpenSSL http://fr.wikipedia.org/wiki/OpenSSL ;
* http://www.openbsd.org/faq/faq10.html#HTTPS ;
* http://en.wikipedia.org/wiki/X.509 http://fr.wikipedia.org/wiki/X.509 ;
* http://users.dcc.uchile.cl/~pcamacho/tutorial/crypto/openssl/openssl_intro.html ;
* etc.