Utilisation de certificats SSL faibles et auto-signés
Comment créer des certificats SSL auto-signés approuvés et des domaines locaux pour est
Configurer des domaines de test locaux et activer un certificat approuvé et auto-signé pour des tests locaux rapides
La plupart du temps, nous avons des domaines autres que localhost pour tester les applications localement, et nous avons également besoin de certificats SSL auto-signés de confiance.
Certificat auto-signé
Un certificat auto-signé est un certificat qui est signé par la personne qui l’a créé, plutôt que par une autorité de certification approuvée. Les serveurs de développement peuvent être activés avec des certificats auto-signés pour nous aider à réduire le coût des certificats et les frais généraux de gestion.
Par défaut, le certificat auto-signé génère une erreur de validation de certificat lors de l’accès à des sites Web dans les navigateurs, mais nous permet de passer aux pages réelles en acceptant le risque. Dans certains cas, les certificats auto-signés ne nous aident pas à tester certaines fonctionnalités du navigateur qui ne fonctionnent qu'avec SSL valide, telles que le test des API de différents navigateurs, telles que la géolocalisation.
Voyons maintenant comment configurer rapidement des domaines locaux et un certificat auto-signé approuvé pour les tests dans Windows. la même chose peut être utilisée sur d’autres systèmes avec quelques étapes supplémentaires.
Domaines locaux
Parfois, nous pouvons avoir besoin d’avoir différents domaines pour tester notre application dans l’environnement de développement. La configuration DNS consomme plus de temps et d’argent; les domaines natifs nous aident à tester rapidement les applications dans les environnements de développement.
Je vais définir les domaines de test suivants — , et . sub.myexample.com myexample1.com myexample.com
Modifiez le fichier Windows, cliquez sur le bouton . Ajoutez les entrées suivantes pour mapper les domaines de test afin que les domaines définis puissent accéder à l’application s’exécutant sur localhost au sein de la même machine. hosts
C:WindowsSystem32driversetchosts
127.0.0.1
127.0.0.1 myexample.com
127.0.0.1 sub.myexample.com
127.0.0.1 myexample1.com
Créons maintenant un certificat auto-signé via OpenSSL.
Création d’un certificat SSL racine
Créez une clé RSA-2048 et enregistrez-la dans le fichier. rootCA
.key
openssl genrsa -des3 -out rootCA.key 2048
Lorsque vous obtenez « Entrez le mot de passe pour rootCA.key », entrez un mot de passe et stockez-le en toute sécurité.
Créez un certificat racine via la clé générée.
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1460 -out rootCA.pem
Modifiez les jours de validité si nécessaire.
Lorsque vous obtenez « Entrez la phrase secrète pour rootCA.key », entrez le mot de passe qui a été utilisé pour créer la clé racine.
Entrez toute autre information facultative :
- Nom du pays (code à 2 lettres) [AU]: ÉTATS-UNIS
- Nom de l’État ou de la province (nom complet) [Certains États]: MN
- Nom du lieu (par exemple, ville) []: Eagan
- Nom de l’organisation (p. ex., société) [Internet Widgits Pty Ltd]: Forum technologique
- Nom de l’unité organisationnelle (p. ex. section) []: Marketing
- Nom commun (par exemple, nom de domaine complet du serveur ou VOTRE nom) []: Certificat local
- Adresse e-mail []:
[email protected]
Faites confiance au certificat SSL racine :
Le certificat racine est maintenant prêt. Faisons confiance au certificat SSL racine sur le système local.
Exécutez la commande suivante à partir d’une invite de commandes (exécutée avec un accès élevé) :
certutil -addstore -f « ROOT » rootCA.pem
Le certificat racine est maintenant ajouté dans le cadre des autorités de certification racines de confiance.
Vous pouvez vérifier le certificat via le Gestionnaire de certificats ou le fichier . Certmgr.msc
Même le certificat racine peut être géré via des navigateurs : dans Chrome, accédez à Confidentialité et sécurité → Paramètres → Sécurité → Gérer les certificats → autorités de certification racines de confiance.
Vous pouvez importer/exporter et supprimer le certificat (les certificats ne peuvent pas être supprimés s’ils sont importés comme suit):Certmgr.msc
Si vous utilisez Firefox pour les tests locaux, il ignorera les certificats racine dans le magasin de certificats Windows (Chrome et Edge font référence aux certificats racine dans le magasin de certificats Windows). Le certificat racine auto-signé doit être importé séparément dans Firefox.
Options → Accédez à Confidentialité et sécurité → Certificats de sécurité → → afficher les certificats.
Vous pouvez importer/exporter et supprimer des certificats. Importez le certificat d’autorité de certification racine créé dans les étapes précédentes. Sélectionnez « Faire confiance à cette autorité de certification pour définir des sites Web ».
Créer un certificat SAN SSL avec un certificat racine
Le certificat racine est désormais approuvé. Nous vous donnons un certificat SSL pour prendre en charge nos domaines locaux – , , et pour les tests. myexample.com
sub.myexample.com
myexample1.com
localhost
Créez un nouveau fichier de configuration OpenSSL afin que les détails de configuration soient disponibles lors de la création du certificat. serveur.csr.cnf
[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
[dn]
C=US
ST=MN
L=Eagan
O=Tech Forum
OU=Marketing
[email protected]
CN = localhost
Créer un fichier avec une liste de domaines SAN locaux :v3.ext
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names[alt_names]
DNS.1 = myexample.com
DNS.2=sub.myexample.com DNS.3=myexample1.com
DNS.4=localhost
Créez une clé privée et une demande de signature de certificat (CSR) pour le certificat localhost.
openssl req -new -sha256 -nodes -out server.csr -newkey rsa:2048 -keyout server.key -config server.csr.cnf
Cette clé privée est stockée sur . serveur.key
Émettons un certificat via le certificat SSL racine et le CSR créé précédemment.
openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 500 -sha256 -extfile v3.ext
Lorsqu’il est indiqué « Entrez la phrase secrète pour rootCA.key », entrez la phrase secrète utilisée lors de la génération de la clé racine.
Le certificat de sortie est stocké dans un fichier appelé . serveur.crt
Activer le certificat SSL pour le serveur local
Activons maintenant le certificat pour le serveur local. Je vais configurer le certificat avec l’application Express.js pour activer la communication SSL approuvée.
application.js
var express = require('express')const path = require('path')
const https = require('https');
const fs = require('fs');var app = express ()app.get('/index.html', function (req, res) {res.sendFile('index.html', { root: path.join(__dirname, '.') })})https.createServer({ key: fs.readFileSync('ssl\server.key'), cert: fs.readFileSync('ssl\server.crt')}, app).listen(443, function()
{
console.log('Exemple d'application écoutant sur le port 443!
Aller à https://localhost/')})
Maintenant, le certificat est approuvé à partir du navigateur pour les domaines de test , , et . myexample.com
sub.myexample.com
myexample1.com
localhost
Le certificat approuvé et auto-signé peut être utilisé pour le développement et les tests initiaux avec des domaines locaux. Cela nous aidera à activer rapidement les domaines locaux approuvés pour tester certains scénarios nécessitant un certificat SSL approuvé.