Создать сертификат конечного объекта с OpenSSL для локального хоста на IIS

Я хотел бы спросить, как сгенерировать сертификат конечного объекта на основе моего собственного корня CA сертификат? Я сгенерировал корневой центр сертификации следующим образом:

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

Я импортировал файл cer в доверенные корневые центры сертификации Windows и файл pfx в сертификаты сервера IIS .

Он хорошо работает с Chrome, IE и Edge, но Firefox сообщает о проблеме с моим сертификатом: MOZILLA_PKIX_ERROR_CA_CERT_USED_AS_END_ENTITY

Я погуглил и узнал, что у меня должен быть сертификат конечного объекта, подписанный моим корневым сертификатом CA. Я пытался сгенерировать сертификат конечного объекта с помощью:

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

Ответ OpenSSL:

Signature ok
subject=CN = MyCompanyEE
Getting CA Private Key

Я также импортировал server.pfx в ​​сертификаты сервера IIS и изменил привязки для моего веб-приложения, чтобы использовать сертификат сервера, но теперь он не работает ни в Firefox, ни в Chrome.

Firefox сообщает: SSL_ERROR_BAD_CERT_DOMAIN ,

Chrome сообщает: NET :: ERR_CERT_COMMON_NAME_INVALID .

Что я делаю не так?

0
задан 7 February 2020 в 13:50
1 ответ

Мне не удалось сгенерировать сертификат с помощью OpenSSL для локального веб-сайта (доступен в интрасети по адресу 192.168.100.82:997), поэтому - согласно совету @ Crypt32 - я изменил подход и использовал PowerS ад. Вы можете найти мое рабочее решение ниже:

  1. Запустите PowerShell от имени администратора .
  2. Используйте приведенный ниже код для создания самозаверяющих сертификатов корневого центра (MyCompany CA) и сертификатов сервера (MyCompany):

     $ authorCert =  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 = {текст} 1.3.6.1.5.5.7.3.1", "2.5.29.19 = {критический} {текст} 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 "Моя Компания" `
     -TextExtension @ ("2.5.29.37 = {текст} 1.3.6.1.5.5.7.3.1", "2.5.29.17 = {текст} IPAddress = 192.168.100.82") `
     -Signer $ authorCert
    
     $ directory = "C: \ Users \ bug_2 \ Certificates \"
    если (! (тестовый путь $ каталог))
     {
      New-Item -ItemType Directory -Force -Path $ directory
     }
     $ authorCertPath = 'Сертификат: \ LocalMachine \ My \' + ($ AuthorCert.ThumbPrint)
     $ AuthorityCertFilename = $ directory + Authority.cer
    Экспорт-Сертификат -Cert $ authorCertPath -FilePath $ AuthorCertFilename
     $ devCertPath = 'Сертификат: \ LocalMachine \ My \' + ($ devCert.ThumbPrint)
     $ devCertFilename = $ directory + "Dev.cer"
    Экспорт-сертификат -Cert $ devCertPath -FilePath $ devCertFilename
     
  3. Добавьте корневой сертификат в доверенные корневые центры сертификации в своей системе, нажав WIN + R, введите: mmc , нажмите ENTER. В консоли управления Microsoft выберите Файл-> Добавить или удалить оснастки , а затем в новом окне Сертификаты -> Добавить -> ОК . Разверните Сертификаты-> Доверенные корневые центры сертификации . Щелкните правой кнопкой мыши каталог Сертификаты , расположенный внутри Доверенные корневые центры сертификации , и выберите Все задачи-> Импорт ... и выберите файл Authority.cer из C: \ Users \ bug_2 \ Certificates \ . Примените изменения и закройте Консоль управления Microsoft .

  4. Вы можете найти свои новые сертификаты (корневой и серверный) в IIS без каких-либо дополнительных действий. Выберите свой веб-сайт в IIS, нажмите Bindings ...-> Edit и выберите сертификат сервера (MyCompany). Применить изменения.

  5. Мой веб-сайт теперь доступен по адресу https://192.168.100.82:997 во всех веб-браузерах (например, Chrome, IE, Edge), кроме Firefox. Для исправления, запускающего Firefox, введите about: config в адресной строке и установите для security.enterprise_roots.enabled значение true. Перезапустите Firefox .

Теперь мой локальный веб-сайт доступен во внутренней сети по адресу https://192.168.100.82:997 .

0
ответ дан 26 February 2020 в 00:42

Теги

Похожие вопросы