2 votes

Générer un certificat d'entité finale avec OpenSSL pour localhost sur IIS

Je voudrais demander comment générer un certificat d'entité finale basé sur mon propre certificat racine CA ? J'ai généré le CA racine de cette manière :

openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \
    -keyout example.key -out example.crt -subj /CN=MyCompany \
    -addext subjectAltName=IP:192.168.100.82

openssl pkcs12 -export -out cert.pfx -inkey example.key -in example.crt

J'ai importé le fichier cer dans Autorités de certification racine de confiance Windows et le fichier pfx dans Certificats de serveur IIS.

Cela fonctionne bien avec Chrome, IE et Edge, mais Firefox signale un problème avec mon certificat : MOZILLA_PKIX_ERROR_CA_CERT_USED_AS_END_ENTITY

J'ai fait des recherches et j'ai appris que je devrais avoir un certificat d'entité finale signé par mon certificat CA racine. J'ai essayé de générer un certificat d'entité finale avec :

openssl genrsa -out server.key 4096
openssl req -new -key server.key -out server.csr -subj /CN=MyCompanyEE -addext subjectAltName=IP:192.168.100.82
openssl x509 -req -in server.csr -CA cert.pem -CAkey example.key -CAcreateserial -out server.crt -days 3650 -sha256
openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt

Réponse d'OpenSSL :

Signature ok
subject=CN = MyCompanyEE
Getting CA Private Key

J'ai également importé server.pfx dans Certificats de serveur IIS, et j'ai modifié les liaisons pour que mon application web utilise le certificat du serveur, mais maintenant cela ne fonctionne pas dans Firefox ni dans Chrome.

Firefox indique : SSL_ERROR_BAD_CERT_DOMAIN,

Chrome indique : NET::ERR_CERT_COMMON_NAME_INVALID.

Qu'est-ce que je fais de mal ?

1voto

Gunasegar Points 161

Je n'ai pas réussi à générer un certificat avec OpenSSL pour un site local (disponible en intranet à 192.168.100.82:997) donc - selon les conseils de @Crypt32 - j'ai changé d'approche et j'ai utilisé PowerShell. Vous pouvez trouver ma solution fonctionnelle ci-dessous :

  1. Exécutez PowerShell en tant qu'administrateur.

  2. Utilisez le code ci-dessous pour générer une autorité racine auto-signée (MyCompany CA) et des certificats de serveur (MyCompany) :

    $authorityCert = New-SelfSignedCertificate `
    -Subject "CN=MyCompany CA,OU=IT,O=MyCompany Certificate Authority,C=US" `
    -KeyAlgorithm RSA `
    -KeyLength 4096 `
    -KeyUsage CertSign, CRLSign, DigitalSignature, KeyEncipherment, DataEncipherment `
    -KeyExportPolicy Exportable `
    -NotBefore (Get-Date) `
    -NotAfter (Get-Date).AddYears(10) `
    -HashAlgorithm SHA256 `
    -CertStoreLocation "Cert:\LocalMachine\My" `
    -FriendlyName "MyCompany CA" `
    -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.1", "2.5.29.19={critical}{text}ca=1")
    
    $devCert = New-SelfSignedCertificate `
    -Subject "CN=MyCompany,OU=App Test,O=MyCompany,C=US" `
    -KeyAlgorithm RSA `
    -KeyLength 4096 `
    -KeyUsage DigitalSignature, KeyEncipherment, DataEncipherment `
    -KeyExportPolicy Exportable `
    -NotBefore (Get-Date) `
    -NotAfter (Get-Date).AddYears(10) `
    -HashAlgorithm SHA256 `
    -CertStoreLocation "Cert:\LocalMachine\My" `
    -FriendlyName "MyCompany" `
    -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.1", "2.5.29.17={text}IPAddress=192.168.100.82") `
    -Signer $authorityCert
    
    $directory = "C:\Users\bug_2\Certificates\"
    if(!(test-path $directory))
    {
      New-Item -ItemType Directory -Force -Path $directory
    }
    $authorityCertPath = 'Cert:\LocalMachine\My\' + ($authorityCert.ThumbPrint)
    $authorityCertFilename = $directory + "Authority.cer"
    Export-Certificate -Cert $authorityCertPath -FilePath $authorityCertFilename
    $devCertPath = 'Cert:\LocalMachine\My\' + ($devCert.ThumbPrint)
    $devCertFilename = $directory + "Dev.cer"
    Export-Certificate -Cert $devCertPath -FilePath $devCertFilename
  3. Ajoutez le certificat racine aux Autorités de certification racine de confiance de votre système en appuyant sur WIN+R, tapez : mmc, appuyez sur ENTRÉE. Dans la Console de gestion Microsoft, choisissez Fichier->Ajouter ou supprimer des composants logiciels autonomes et ensuite, dans la nouvelle fenêtre, Certificats -> Ajouter -> OK. Développez Certificats->Autorités de certification racine de confiance. Cliquez avec le bouton droit sur le catalogue Certificats placé à l'intérieur de Autorités de certification racine de confiance et choisissez Toutes les tâches->Importer... et sélectionnez le fichier Authority.cer depuis C:\Users\bug_2\Certificates\. Appliquez les changements et fermez la Console de gestion Microsoft.

  4. Vous pouvez trouver vos nouveaux certificats (racine et serveur) dans IIS sans aucune étape supplémentaire. Choisissez votre site Web dans IIS, cliquez sur Liaisons...->Modifier et sélectionnez le certificat de serveur (MyCompany). Appliquez les changements.

  5. Mon site Web est maintenant disponible à l'adresse https://192.168.100.82:997 sur tous les navigateurs Web (comme Chrome, IE, Edge) sauf Firefox. Pour corriger cela, lancez Firefox, saisissez about:config dans la barre d'adresse et définissez security.enterprise_roots.enabled sur true. Redémarrez Firefox.

Maintenant, mon site local est disponible en intranet à l'adresse https://192.168.100.82:997.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X