Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
tutoriel:comment_creer_un_certificat_ssl [Le 08/08/2014, 12:40] – [tag] axel55tutoriel:comment_creer_un_certificat_ssl [Le 01/09/2022, 00:09] (Version actuelle) – Passage de http à https sur les liens externes (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892) moths-art
Ligne 1: Ligne 1:
-{{tag>precise trusty serveur sécurité tutoriel}}+{{tag>trusty serveur sécurité tutoriel}}
  
 ---- ----
Ligne 9: Ligne 9:
 ===== Introduction ===== ===== Introduction =====
  
-Dans plusieurs documents du wiki, on aborde la question de la création de certificat SSL privé (c'est-à-dire qu'ils ne sont pas certifiés par une autorité indépendante). +Dans plusieurs documents du wiki, on aborde la question de la création de certificat SSL.
- +
-Il existe beaucoup de sites expliquant comment créer un certificat SSL personnel. Voici une technique qui fonctionne mais dans laquelle je ne donne pas  de détails.+
  
 +Il existe beaucoup de sites expliquant comment créer un certificat SSL. Voici une technique qui fonctionne mais dans laquelle je ne donne pas de détails.
 ===== Pré-requis ===== ===== Pré-requis =====
  
Ligne 24: Ligne 23:
 ===== Marche à suivre ===== ===== Marche à suivre =====
  
-Placez-vous dans le répertoire ''/etc/ssl'' et créez la clé :+==== Clef privée du serveur ====
  
 +Placez-vous dans le répertoire ''/etc/ssl'' et créez la clé :
 <code> <code>
 cd /etc/ssl cd /etc/ssl
Ligne 33: Ligne 33:
 Cette commande va créer la clé privée avec l'algorithme RSA 2048 bits. Cette commande va créer la clé privée avec l'algorithme RSA 2048 bits.
  
-Vous allez devoir répondre à un certain nombre de questions. Veillez surtout à mettre le nom du serveur tel qu'il est appelé de l'extérieur dans le champ « Common Name » (par exemple : "www.example.com") :+==== Demande de signature du certificat ====
  
 Ensuite il faut générer un fichier de « demande de signature de certificat », en anglais CSR : Certificate Signing Request  : Ensuite il faut générer un fichier de « demande de signature de certificat », en anglais CSR : Certificate Signing Request  :
Ligne 40: Ligne 40:
 sudo openssl req -new -key server.key -out server.csr sudo openssl req -new -key server.key -out server.csr
 </code> </code>
 +
 +Vous allez devoir répondre à un certain nombre de questions. Veillez surtout à mettre le nom du serveur tel qu'il est appelé de l'extérieur dans le champ « Common Name » (par exemple : "www.example.com").
 +
 +Optionnel : pour visualiser le contenu du fichier généré :
 +<code>
 +openssl req -text -noout -in server.csr
 +</code>
 +==== Signature du certificat ====
 +
  
 Enfin, générez ou récupérez le certificat signé au format x509 suivant la méthode 1 ou 2 : Enfin, générez ou récupérez le certificat signé au format x509 suivant la méthode 1 ou 2 :
Ligne 45: Ligne 54:
 sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
 </code>//Remarque : ce certificat n'est authentifié par aucune autorité, vous aurez donc un message d'avertissement quand vous vous connectez au serveur. // </code>//Remarque : ce certificat n'est authentifié par aucune autorité, vous aurez donc un message d'avertissement quand vous vous connectez au serveur. //
-  - certificat signé par une autorité tierce, par exemple [[https://www.cacert.org|CACert]] : copier/coller la demande (le fichier server.csr) à l'autorité qui va signer le certificat à utiliser ([[https://www.cacert.org/account.php?id=10|ici pour cacert]]).+  - certificat signé par une autorité tierce, par exemple 
 +    * [[https://www.cacert.org|CACert]] : copier/coller la demande (le fichier server.csr) à l'autorité qui va signer le certificat à utiliser ([[https://www.cacert.org/account.php?id=10|ici pour cacert]]). 
 +    * [[https://letsencrypt.org/|Let's Encrypt]], avec l'option --csr du client letsencrypt (CSR au format DER : option // -outform der// pour openssl) 
 + 
 +===== Usage avancé ===== 
 + 
 +==== Usage non interactif ==== 
 + 
 +Pour éviter de répondre aux questions de la localisation jusqu'au domaine, il est possible de passer l'argument subject à la commande openssl. Ajouter le paramètre : //-subj "/OU=Domain Control Validated/CN=exemple.fr"// 
 + 
 +<note help>//Domain Control Validated// indique simplement que seule la vérification du domaine est effectuée. Ce paramètre peut être omis. Il existe une vérification DV (celle indiquée) et EV, plus complète. Plus de détails sur [[https://certsimple.com/blog/are-ev-ssl-certificates-worth-it|ce blog]] (en).</note> 
 + 
 +==== Paramétrage fin de la CSR ==== 
 + 
 +Les CSR permettent de valider plusieurs domaines avec un même certificat. Pour l'utiliser, créer un fichier //openssl_SAN.cnf// comme-suit : 
 +<file> 
 +[req] 
 +req_extensions = v3_req 
 +distinguished_name = req_distinguished_name 
 + 
 +[req_distinguished_name] 
 + 
 +[v3_req] 
 +# Extensions to add to a certificate request 
 +basicConstraints = CA:FALSE 
 +keyUsage = digitalSignature, keyEncipherment 
 + 
 +[SAN] 
 +subjectAltName=DNS:exemple.fr,DNS:www.exemple.fr 
 +</file> 
 + 
 +Et ajouter les paramètres suivants à la commande openssl : //-config openssl_SAN.cnf -reqexts SAN//
  
 +===== Voir aussi =====
  
 +  * **(fr)** [[https://www.magdiblog.fr/divers/creer-une-passerelle-securisee-avec-un-raspberry-pi/|Qu'est ce qu'un certificat, comment créer une CA ainsi qu'un exemple d'authentification par certificat client]]
 +  * **(en)** [[https://www.tty1.net/blog/2015/using-letsencrypt-in-manual-mode_en.html|Utilisation détaillée avec Let's Encrypt]]
  
 ---- ----