Dans un LAN (réseau local), nous avons un ordinateur serveur, ici nommé xhost exécutant Windows 10, IIS est activé en tant que serveur Web. Nous devons accéder à cet ordinateur via un navigateur tel que Google Chrome non seulement à partir de localhost via https://localhost/ depuis le serveur lui-même, mais aussi à partir d'autres hôtes du LAN avec l'URL https://**xhost**/ :
https://localhost/
https://xhost/
https://xhost.local/
...
Avec cette manière d'accéder, nous n'avons pas de nom de domaine entièrement qualifié, mais seulement le nom d'ordinateur local xhost ici.
Ou depuis WAN:
https://dev.example.org/
...
Vous devez remplacer xhost par le nom réel de votre ordinateur local.
Aucune des solutions ci-dessus ne peut nous satisfaire. Après des jours d'essai, nous avons adopté la solution openssl.exe. Nous utilisons 2 certificats - un CA (certificat d'autorité auto-certifié) RootCA.crt et xhost.crt certifié par le premier. Nous utilisons PowerShell.
1. Créer et passer à un répertoire sécurisé :
cd C:\users\so\crt
2. Générer RootCA.pem, RootCA.key et RootCA.crt en tant qu'autorité de certification auto-certifiée :
openssl req -x509 -nodes -new -sha256 -days 10240 -newkey rsa:2048 -keyout RootCA.key -out RootCA.pem -subj "/C=ZA/CN=RootCA-CA"
openssl x509 -outform pem -in RootCA.pem -out RootCA.crt
3. Faire une demande de certification : xhost.key, xhost.csr :
C: Pays
ST: État
L: Localité (ville)
O: Nom de l'organisation
Unité d'Organisation
CN: Nom Commun
openssl req -new -nodes -newkey rsa:2048 -keyout xhost.key -out xhost.csr -subj "/C=ZA/ST=FREE STATE/L=Golden Gate Highlands National Park/O=WWF4ME/OU=xhost.home/CN=xhost.local"
4. Obtenir xhost.crt certifié par RootCA.pem :
openssl x509 -req -sha256 -days 1024 -in xhost.csr -CA RootCA.pem -CAkey RootCA.key -CAcreateserial -extfile domains.ext -out xhost.crt
avec le fichier extfile domains.ext définissant de nombreuses façons sécurisées d'accéder au site Web du serveur :
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
DNS.2 = xhost
DNS.3 = xhost.local
DNS.4 = dev.example.org
DNS.5 = 192.168.1.2
5. Créer xhost.pfx PKCS #12 :
en combinant à la fois la clé privée xhost.key et le certificat xhost.crt, permettant d'importer dans iis. Cette étape demande un mot de passe, veuillez le laisser vide en appuyant sur la touche [RETURN] (sans mot de passe) :
openssl pkcs12 -export -out xhost.pfx -inkey xhost.key -in xhost.crt
6. Importer xhost.pfx dans iis10:
installé dans l'ordinateur xhost (ici localhost). et Redémarrer le service IIS.
Gestionnaire des services Internet (IIS) d'IIS10 (%windir%\system32\inetsrv\InetMgr.exe)
7. Associer SSL avec le certificat xhost.local sur le port 443.
Redémarrer le service IIS.
8. Importer RootCA.crt dans les Autorités de Certification Racine Fiables
via Google Chrome dans n'importe quel ordinateur qui accédera au site Web https://xhost/.
\Google Chrome/…/Paramètres /[Avancé]/Confidentialité et sécurité/Sécurité/Gérer les certificats
Importer RootCA.crt
Le navigateur affichera cet arbre de certificats valide :
RootCA-CA
|_____ xhost.local
Aucune erreur de certificat n'apparaîtra via le LAN, même via WAN par https://dev.example.org.
Voici le fichier de script PowerShell complet socrt.ps1 pour générer tous les fichiers de certificat requis à partir de zéro :
#
# Générer :
# RootCA.pem, RootCA.key RootCA.crt
#
# xhost.key xhost.csr xhost.crt
# xhost.pfx
#
# créé le 15-EEC-2020
# modifié le 15-DÉC-2020
#
#
# changer vers un répertoire sûr :
#
cd C:\users\so\crt
#
# Générer RootCA.pem, RootCA.key & RootCA.crt en tant qu'autorité de certification :
#
openssl req -x509 -nodes -new -sha256 -days 10240 -newkey rsa:2048 -keyout RootCA.key -out RootCA.pem -subj "/C=ZA/CN=RootCA-CA"
openssl x509 -outform pem -in RootCA.pem -out RootCA.crt
#
# obtenir RootCA.pfx : permettant d'importer dans iis10: non requis.
#
#openssl pkcs12 -export -out RootCA.pfx -inkey RootCA.key -in RootCA.crt
#
# obtenir xhost.key xhost.csr :
# C: Pays
# ST: État
# L: Localité (ville)
# O: Nom de l'organisation
# OU: Unité d'organisation
# CN: Nom commun
#
openssl req -new -nodes -newkey rsa:2048 -keyout xhost.key -out xhost.csr -subj "/C=ZA/ST=FREE STATE/L=Golden Gate Highlands National Park/O=WWF4ME/OU=xhost.home/CN=xhost.local"
#
# obtenir xhost.crt certifié par RootCA.pem :
# pour afficher le contenu :
# openssl x509 -in xhost.crt -noout -text
#
openssl x509 -req -sha256 -days 1024 -in xhost.csr -CA RootCA.pem -CAkey RootCA.key -CAcreateserial -extfile domains.ext -out xhost.crt
#
# obtenir xhost.pfx, permettant d'importer dans iis :
#
openssl pkcs12 -export -out xhost.pfx -inkey xhost.key -in xhost.crt
#
# importer xhost.pfx dans iis10 installé dans l'ordinateur xhost (ici localhost).
#
Pour installer openSSL pour Windows, veuillez visiter https://slproweb.com/products/Win32OpenSSL.html
0 votes
Avez-vous installé le certificat en tant qu'autorité de certification ?
0 votes
J'ai suivi le processus pour installer un certificat auto-signé dans IIS sous Win7. Mais cela crée le certificat pour "nomdemachine", et j'ai besoin d'un certificat pour "localhost".
1 votes
Salut! Considérez définir la réponse d'Auri comme réponse principale car makecert est obsolète. Lien vers la réponse : stackoverflow.com/a/44164653/1461602
0 votes
Décrivez le processus pour win/osx ici alfilatov.com/posts/how-to-create-self-signed-certificate