Avertissement: Avant de plonger dans le champ de mines de la gestion de votre propre autorité de certification, vous devrez peut-être étudier les implications en matière de sécurité!
Mais si vous devez, lisez la suite pour une CA rapide et sale qui vous donnera https://localhost/
sans message d'avertissement ...
Créez le fichier texte suivant:
# OpenSSL configuration for Root CA
[ req ]
prompt = no
string_mask = default
# The size of the keys in bits:
default_bits = 2048
distinguished_name = req_distinguished_name
x509_extensions = x509_ext
[ req_distinguished_name ]
# Note that the following are in 'reverse order' to what you'd expect to see.
countryName = gb
organizationName = Test
commonName = Test Root CA
[ x509_ext ]
basicConstraints=critical,CA:true,pathlen:0
keyUsage=critical,keyCertSign,cRLSign
Enregistrez sous root.cnf
puis générez la demande avec:
$ openssl req -x509 -new -keyout root.key -out root.cer -config root.cnf
Cela créera votre certificat racine CA ( root.cer
) et votre clé privée racine CA ( root.key
) que vous devez garder privée. Il vous demandera un mot de passe pour la clé privée - assurez-vous d'en choisir un fort.
Créez maintenant un fichier de configuration pour le certificat de serveur:
# OpenSSL configuration for end-entity cert
[ req ]
prompt = no
string_mask = default
# The size of the keys in bits:
default_bits = 2048
distinguished_name = req_distinguished_name
x509_extensions = x509_ext
[ req_distinguished_name ]
# Note that the following are in 'reverse order' to what you'd expect to see.
countryName = gb
organizationName = Test
commonName = localhost
[ x509_ext ]
keyUsage=critical,digitalSignature,keyAgreement
subjectAltName = @alt_names
# Multiple Alternate Names are possible
[alt_names]
DNS.1 = localhost
# DNS.2 = altName.example.com
Enregistrez-le sous server.cnf
et générez la demande avec:
openssl req -nodes -new -keyout server.key -out server.csr -config server.cnf
Ce qui précède va générer une autre clé privée ( server.key
) que vous devez protéger. Dans ce cas, la clé n'est pas protégée par mot de passe, mais vous pouvez ajouter un mot de passe en supprimant l' -nodes
option.
Enfin, signez la demande avec votre nouvelle autorité de certification racine et les extensions du server.cnf
fichier (pour plus de commodité):
$ openssl x509 -req -in server.csr -CA root.cer -CAkey root.key -set_serial 123 -out server.cer -extfile server.cnf -extensions x509_ext
Remarque: choisissez un nombre aléatoire pour l' -set_serial
option.
Il vous demandera le mot de passe que vous avez entré lorsque vous avez généré l'autorité de certification racine.
Un certificat de serveur ( server.cer
) sera généré.
Maintenant, ajoutez le certificat de l'autorité de certification racine ( root.cer
) au magasin d'ancrage de confiance de Firefox et exécutez un test avec:
$ sudo openssl s_server -key server.key -cert server.cer -accept 443 -www
Remarque: vous pouvez obtenir des erreurs si un serveur est déjà en cours d'exécution sur le port 443. Dans ce cas, arrêtez le serveur en cours d'exécution ou remplacez le numéro de port ci-dessus par un autre port inutilisé.
Lorsque vous naviguez vers https://localhost
(ou https://localhost:<port>
si vous avez modifié le numéro de port ci-dessus) avec Firefox, vous ne devriez maintenant voir aucun avertissement et vous présenter une liste de chiffres que votre installation d'OpenSSL peut offrir.
Une fois que vous êtes satisfait des résultats, ajoutez le server.key
et server.cer
à votre serveur Web et configurez-le en conséquence.