Comment créer un certificat SSL auto-signé?

64

J'ai configuré SSL sur mon serveur web, il me faut maintenant deux fichiers:

  • une attestation
  • une clé de certificat

Comment créer un certificat auto-signé à des fins de test?

Stefano Palazzo
la source

Réponses:

93

Ubuntu, même la saveur 'minimale', est livré avec le ssl-certpaquet pré-installé, ce qui signifie que vous n'avez rien à faire.

Les fichiers que vous recherchez sont déjà sur votre système:

/etc/ssl/certs/ssl-cert-snakeoil.pem
/etc/ssl/private/ssl-cert-snakeoil.key


Avancée:

Si, pour une raison quelconque, vous devez créer un nouveau certificat, vous pouvez exécuter

sudo make-ssl-cert generate-default-snakeoil --force-overwrite 

Si vous souhaitez modifier la date d'expiration de votre certificat, vous pouvez manipuler le script make-ssl-cert à l'adresse /usr/sbin/make-ssl-cert. Autour de 124, il y a une ligne semblable à celle-ci:

openssl req -config $TMPFILE -new -x509 -nodes \ 

Où vous pouvez changer la date d'expiration en ajoutant l' -daysargument:

openssl req -config $TMPFILE -new -days 365 -x509 -nodes \ 

Plus d'options peuvent être trouvées dans la page de manuel dereq .

Stefano Palazzo
la source
10
Ubuntu-server 12.04 (image de nuage AMI) n’a pas ssl-cert installé par défaut. Mais une fois que ssl-cert est installé - /etc/ssl/certs/ssl-cert-snakeoil.pem est disponible automatiquement.
Stann
make-ssl-cert prend la longueur de la clé (et d’autres paramètres) à utiliser /usr/share/ssl-cert/ssleay.cnf.
Tim Smith
En essayant de tester un site Web dans une instance de machine virtuelle vagabonde locale, je souhaitais que Google Chrome se comporte comme s'il s'agissait d'un certificat totalement normal. Je devais d'abord définir le nom d'hôte de la machine virtuelle pour qu'il corresponde à l'url de test (par exemple www.test.mydomain.com) à l'aide de la hostnamecommande de la CLI de la machine virtuelle. Ensuite, en régénérant la clé comme vous le suggérez, --force-overwritele nom commun (CN) de la clé correspond alors à l'URL de test. Enfin, sur la machine hôte, l'installation de la clé en tant qu'autorité de certification racine de confiance (dans Paramètres / Avancé de Chrome) m'a fourni la barre d'adresse verte convoitée.
Buttle Butkus
1
mon certificat de 9 ans a cessé de fonctionner avec ma mise à niveau vers debian 10, alors la make-ssl-certcommande m'a sauvé la journée!
Jayen
23

Comme déjà mentionné, Ubuntu Server est fourni avec les outils nécessaires. Selon la version de votre serveur, vous devrez rechercher la documentation spécifique . Je vais essayer de résumer le processus de génération de certificats auto-signé du LTS actuel (12.04) .

Tout d'abord, vous générez les clés pour la demande de signature de certificat (CSR):

openssl genrsa -des3 -out server.key 2048

C'est à vous de saisir une phrase secrète ou non. Si vous le faites, chaque fois que vous démarrez un service en utilisant ce certificat, vous devrez fournir la phrase secrète. Otoh vous pouvez créer une clé "non sécurisée" sans mot de passe composé du mot de passe sécurisé:

openssl rsa -in server.key -out server.key.insecure
# shuffle the key names to continue without passphrases
mv server.key server.key.secure
mv server.key.insecure server.key

Et maintenant, vous allez créer le CSR à partir de la clé. Avec la CSR et la clé, un certificat auto-signé peut être généré:

openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

La dernière étape consiste à installer le certificat et la clé, dans Debian / Ubuntu généralement dans /etc/ssl:

sudo cp server.crt /etc/ssl/certs
sudo cp server.key /etc/ssl/private

Et enfin, les applications utilisant le certificat / clé doivent être configurées en conséquence.

niétonfir
la source