Ssl-Certificate
使用 OpenSSL 為 IIS 上的 localhost 生成最終實體證書
請問如何根據自己的CA根證書生成端實體證書?我以這種方式生成了根 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 Trusted Root Certification Authorities並將 pfx 文件導入IIS Server Certificates。
它適用於 Chrome、IE 和 Edge,但 Firefox 報告我的證書存在問題:MOZILLA_PKIX_ERROR_CA_CERT_USED_AS_END_ENTITY
我用Google搜尋了它,我了解到我應該擁有由我的 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 伺服器證書,並將我的 Web 應用程序的綁定更改為使用伺服器證書,但現在它在 Firefox 或 Chrome 中都不起作用。
Firefox 說:SSL_ERROR_BAD_CERT_DOMAIN,
Chrome 說:NET::ERR_CERT_COMMON_NAME_INVALID。
我做錯了什麼?
我無法使用 OpenSSL 為本地網站生成證書(可在 192.168.100.82:997 的 Intranet 中獲得)所以 - 根據@Crypt32 的建議 - 我改變了方法並使用了 PowerShell。您可以在下面找到我的工作解決方案:
- 以管理員身份執行 PowerShell 。
- 使用以下程式碼生成自簽名根授權 (MyCompany CA) 和伺服器 (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
- 按 WIN+R 將根證書添加到系統中的受信任的根證書頒發機構,鍵入:mmc,按 ENTER。在Microsoft 管理控制台中選擇
File->Add or Remove Snap-ins
,然後在新視窗中選擇Certificates -> Add -> OK
. 展開Certificates->Trusted Root Certification Authorities
。右鍵點擊放置在受信任的根證書頒發機構內的**證書目錄,然後選擇並從中選擇文件。應用更改並關閉Microsoft 管理控制台。All Tasks->Import...``Authority.cer``C:\Users\bug_2\Certificates\
- 您無需任何額外步驟即可在 IIS 中找到您的新證書(根證書和伺服器證書)。在 IIS 中選擇您的網站,點擊
Bindings...->Edit
並選擇伺服器證書 (MyCompany)。應用更改。- 我的網站現在可以在
https://192.168.100.82:997
除 Firefox 之外的所有網路瀏覽器(如 Chrome、IE、Edge)上使用。對於執行 Firefox 的修復,about:config
在地址欄中輸入並設置security.enterprise_roots.enabled
為 true。重啟火狐。現在我的本地網站在https://192.168.100.82:997的 Intranet 中可用。