Site Overlay

Comment faire pour créer des certificats SSL auto-signés approuvés et des domaines locaux à des fins de test

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 tester | par Albin Issac | Une meilleure programmation

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

Icône de certificat SSL avec le texte « Comment créer des certificats SSL approuvés et auto-signés et des domaines locaux pour test »

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.

Capture d’écran d’un navigateur affichant l’avertissement « Warning: Potential Security Risk Going Next ».

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:WindowsSystem32driversetchosts127.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.

Une invite qui indique que le certificat racine a été 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

1*qPKX6ScawwZGZ4aDqhv ow

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

Paramètres du navigateur Chrome qui affichent une liste d’autorités de certification racines de confiance.

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.

Afficher le Gestionnaire de certificats dans Firefox.

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 ».

Une fenêtre de dialogue avec la case « Faire confiance à cette autorité de certification pour identifier les sites Web » pour télécharger un certificat dans Firefox.

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.comsub.myexample.commyexample1.comlocalhost

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.comsub.myexample.commyexample1.comlocalhost

Capture d’écran d’un navigateur montrant une fenêtre contextuelle de certificat indiquant que la connexion est sécurisée.
Affichage des paramètres d’informations de certificat pour localhost.
Avec l’onglet Détails dans la fenêtre Certificat, cliquez sur « Alternative à l’objet... " Surligné. La boîte ci-dessous montre nos exemples de noms DNS.

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é.