Apportez votre aide…
Ceci est une ancienne révision du document !
Comment créer un certificat SSL ?
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 :
- 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.
- 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"
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