Comment créer un certificat SSL ?

Introduction

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. Voici une technique qui fonctionne mais dans laquelle je ne donne pas de détails. dsds

Pré-requis

Le paquet openssl doit être installé par la commande :

sudo apt-get install openssl

Marche à suivre

Clef privée du serveur

Placez-vous dans le répertoire /etc/ssl et créez la clé :

cd /etc/ssl
sudo openssl genrsa -out server.key 2048

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 :

sudo openssl req -new -key server.key -out server.csr

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é :

openssl req -text -noout -in server.csr

Signature du certificat

Enfin, générez ou récupérez le certificat signé au format x509 suivant la méthode 1 ou 2 :

  1. certificat auto-signé pour 365 jours (1 an) :
    sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

    Remarque : ce certificat n'est authentifié par aucune autorité, vous aurez donc un message d'avertissement quand vous vous connectez au serveur.

  2. certificat signé par une autorité tierce, par exemple :
    • CACert : copier/coller la demande (le fichier server.csr) à l'autorité qui va signer le certificat à utiliser (ici pour cacert).
    • 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"

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 ce blog (en).

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 :

[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

Et ajouter les paramètres suivants à la commande openssl : -config openssl_SAN.cnf -reqexts SAN

Voir aussi

  • tutoriel/comment_creer_un_certificat_ssl.txt
  • Dernière modification: Le 28/04/2018, 11:24
  • (modification externe)