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.
Le paquet openssl
doit être installé par la commande :
sudo apt-get install openssl
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.
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
Enfin, générez ou récupérez le certificat signé au format x509 suivant la méthode 1 ou 2 :
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.
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"
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