Iis
如何為 IIS 網站創建具有主題備用名稱 (SAN) 的自簽名 SSL 證書
有誰知道如何創建一個自簽名 SSL 證書以與具有主題備用名稱 (SAN) 的 IIS (7) 一起使用?我需要證書才能驗證主機名和 IP 地址,如下所示:
- CN=我的伺服器名稱
- IP SAN:192.168.2.2
我一直在看的一些東西:
- Windows SDK:makecert.exe(不支持 SAN)
- Windows API CertEnroll(Server 2008):使用 PowerShell 腳本(我已經能夠讓它與 IIS 一起使用,但是當我將證書導出到 Java 密鑰庫(必須具有)時,我收到一個錯誤 keytool 錯誤:‘java.lang .例外:輸入不是 X.509 證書’)
以下是使用 CertEnroll 的 PowerShell 腳本範例:http: //blogs.technet.com/b/vishalagarwal/archive/2009/08/22/generating-a-certificate-self-signed-using-powershell-and-certenroll-介面.aspx
- OpenSSL:我還沒有研究過這個……
如果我可以讓我的 PowerShell 腳本使用 CertEnroll API 創建一個 Java 可以辨識的證書,那就太好了,但是在這一點上任何有效的東西我都會很高興聽到。
我找到了一種使用 OpenSSL 的方法。我希望使用 CertEnroll,但由於它給我帶來了與 Java 的互操作性問題,我只打算使用 OpenSSL。
以下是我如何使用 OpenSSL 為具有主題備用名稱的 IIS 創建證書。
首先創建一個 OpenSSL 配置文本文件:
[req] distinguished_name = req_distinguished_name x509_extensions = v3_req prompt = no [req_distinguished_name] C = US ST = VA L = SomeCity O = MyCompany OU = MyDivision CN = ANDY [v3_req] keyUsage = keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] DNS.1 = andy DNS.2 = 192.168.2.12 IP.1 = 192.168.2.12 IP.2 = 192.167.20.1
然後執行以下 OpenSSL 命令:
openssl.exe req -x509 -nodes -days 730 -newkey rsa:2048 -keyout C:\cert.pem -out C:\cert.pem -config C:\PathToConfigFileAbove.txt openssl.exe pkcs12 -export -out C:\cert.pfx -in C:\cert.pem -name "My Cert" -passout pass:mypassword
這將在可以導入 IIS 的 PFX 文件中為您創建一個證書。我用powershell自動化了這個,如下所示:
# Get the certificate from the PFX file. $pfxcert = new-object system.security.cryptography.x509certificates.x509certificate2 $pfxcert.Import( "C:\cert.pfx", "mypassword", [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::MachineKeySet -bor ` [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable ) # Add the certificate to the windows stores. Get-Item -Path cert:\LocalMachine\My, cert:\LocalMachine\root | ForEach-Object { $store = $_ $store.Open([System.Security.Cryptography.X509Certificates.OpenFlags]::ReadWrite) $store.Add($pfxcert) $store.Close() } Add-PSSnapin -Name WebAdministration # IIS 7 Powershell module. Push-Location -Path IIS:\SslBindings # Create new IIS SSL bindings. Get-Item -Path "cert:\LocalMachine\My\$($pfxcert.Thumbprint)" | New-Item "0.0.0.0!443"