2011-12-13 35 views
2

內的自簽名證書從我的理解它實際上可能創造發給一個IP地址的證書。在IIS Express中可以這樣做嗎?創建IIS快遞

請注意,這僅用於測試。

編輯

人們似乎缺少真正的肉和我的問題的土豆,所以我已經刪除了額外的細節。

回答

5

謝謝@布魯諾所有的建議!使用單獨的工具創建SSL證書使我朝着正確的方向前進。

首先,我嘗試了IIS 6 selfssl命令行工具,它可能在第一步工作中起作用(但我沒有在找到我當前的解決方案後對其進行測試)。第一步是創建證書,第二步是將該證書綁定到我的IP /端口。

  1. 我用makecert從Visual Studio命令提示符創建我的證書(這是我認爲從IIS 6 Resource Kit中的IIS 6 selfssl工具應該工作以及)。創建證書後,我使用mmc管理單元控制檯並添加證書管理單元,在個人/證書下找到它。

    makecert -r -pe -n "CN=0.0.0.0" -b 01/01/2011 -e 01/01/2025 -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localMachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12

  2. 要將證書綁定到我的IP /端口我用netshipport應改爲您的IP /端口。 appid是一個GUID,我不認爲這個問題很重要。 certhash您可以從證書本身的Thumbnail字段獲得,但您必須刪除散列中的空格。

    netsh http add sslcert ipport=0.0.0.0:44300 appid={AnyGuid} certhash=YourCertificateThumbprint

0

據我理解這個問題,除非你的證書是由實際信譽證書頒發機構頒發,你會不斷收到錯誤。

(通過「可信的證書頒發機構」我的意思是:「你買的起的地方證書」)

http://www.gerv.net/security/self-signed-certs/ < - 對那件事有趣的閱讀。

+1

我認爲你可能指的是其中證書不被信任的問題。但我相信我的問題是不同的。當服務被訪問時,我沒有收到錯誤localhost(這是誰默認的iis快速證書是),但我通過IP地址訪問服務時得到它。你知道如何創建一個在IIS express中發佈到IP地址的自簽名證書嗎?或者如果可以在IIS Express中使用? – Craig 2011-12-13 19:54:08

+1

我不是IIS Express的專家,但是這個問題和答案可能會讓你感興趣http://stackoverflow.com/questions/5521305/iis-express-getting-ssl-to-work – 2011-12-13 20:03:05

+1

「The security本網站提供的證書是針對不同的網站地址發佈的「與CA無關。這是關於主機名稱驗證。 – Bruno 2011-12-13 20:06:41

5

正如我說在this answer

對於SSL/TLS是安全的,你至少需要3點:

  • 合適的加密套件,以及一個成功的握手。
  • 驗證客戶端是否信任服務器證書(通常是通過PKI模型中的已知CA)。
  • 驗證證書是否屬於客戶機打算聯繫的服務器(主機名驗證)。

第二點和第三點是通過證書執行。關於第三點,您正面臨一個問題:主機名驗證。

使用自簽名證書是使用由CA(PKI的一部分)頒發的證書的替代品。這告訴你是否可以信任證書內容是真實的(如發行人聲稱)。通過簽發和使用自簽名證書,您可以自行聲明其內容。你的客戶必須明確地信任你說的話。對於可以說服客戶將自簽名證書作爲可信證書進行安裝的小型部署,這樣可以。

主機名驗證是在此之後的必要步驟。如果您使用護照檢查某人的身份,則不足以檢查您是否來自您承認的國家的真實護照:您還需要檢查照片是否與您面前的人相匹配。 這裏同樣適用:您要連接的是我的主機名(或IP地址),並且它必須與您提供的證書中的主機名(或IP地址)匹配。

當然,localhost只能從本地機器本身訪問,有點像說「我」。 作爲服務器,您需要證書中的名稱才能成爲客戶打電話給您的名稱。 使用主機名而不是IP地址通常會更好。請注意,根據RFC 2818,如果您使用IP地址,則還需要在主題備用名稱擴展名中(儘管有些瀏覽器在該要求上會靈活)。

(您可能也有興趣this answer。儘管它是關於Java服務器的,但原理相同,因爲證書驗證取決於客戶端,可以採用任何語言。)

編輯:(您已經刪除了大部分初始問題,所以我上面的答案可能並不完全合乎情理......)

簡而言之,是的,您可以生成一個通過IP地址標識計算機的證書。

理論上(RFC 2818),IP地址必須在證書的主題備用名稱(SAN)擴展名中(它將是類型爲「IP」的SAN,而不是「DNS」)。但是,在實踐中,規範的這個特定部分只是被鬆散地遵循,因此您可能希望在您的主題DN的通用名稱(CN)中擁有您的IP地址。如果瀏覽器未能充分實現RFC 2818,則甚至可以在主題DN中僅使用CN=your.ip.address,而不需要SAN條目。 (Java clients seem to be strict on this,但這可能不是您的測試用例所必需的。)

我不確定您生成的證書是什麼。 makecert.exe seems not to be able to generate certificates with SANs, unfortunately.

在這種情況下,您可以使用OpenSSL生成自簽名證書(例如,請參閱this answer底部的註釋)。如果需要,創建一個PKCS#12(從您的私鑰和生成的證書(openssl pkcs12 -export -in cert.pem -inkey privkey.pem -out store.pfx)延伸.pfx.p12文件) 之後,請考慮將.pfx文件中的證書配置到IIS Express中。證書和私鑰加入你的證書庫(很可能,雙擊應該觸發正確的對話框),然後使用它(就像它來自CA一樣);根據你如何配置IIS,它可能不得不涉及netsh。這裏似乎有一個教程:http://blogs.blackmarble.co.uk/blogs/rfennell/post/2011/03/22/how-to-expose-iis-express-to-external-network-connections-and-use-a-non-self-signed-certificate.aspxnetsh命令也在@MrZombie提到的this question中列出:您必須通過查看已安裝的證書找到自簽名證書哈希,並調整端口號根據你的設置。)

-1

是的,從IIS,從左邊選擇服務器節點,去服務器證書。從右側的「操作」窗格中,選擇創建自簽名證書...爲證書命名,就是這樣!很簡單...