Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
tutoriel:comment_creer_un_certificat_ssl [Le 03/03/2015, 14:08] 109.190.80.173 [Marche à suivre] |
tutoriel:comment_creer_un_certificat_ssl [Le 01/09/2022, 00:09] (Version actuelle) moths-art 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) |
||
---|---|---|---|
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 23: | Ligne 22: | ||
===== Marche à suivre ===== | ===== Marche à suivre ===== | ||
+ | |||
+ | ==== Clef privée du serveur ==== | ||
Placez-vous dans le répertoire ''/etc/ssl'' et créez la clé : | Placez-vous dans le répertoire ''/etc/ssl'' et créez la clé : | ||
- | 9iw | ||
<code> | <code> | ||
cd /etc/ssl | cd /etc/ssl | ||
Ligne 32: | Ligne 32: | ||
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. | ||
+ | |||
+ | ==== 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 42: | ||
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"). | 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==== | + | ===== Voir aussi ===== |
- | **(fr)** [[http://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]] | + | * **(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]] | ||
---- | ---- |