生成自簽名證書的步驟,該證書在被信任後將適用於兩個不同的 IP,而不會出現安全警告
我們有一個測試伺服器,我正在嘗試轉換為 HTTPS/SSL,它同時具有內部 IP 和外部 IP。我們必須為此特定伺服器使用自簽名證書。過去有一次我用 Flash 對 RTMPS 進行了一些研發,所以我仍然有一系列步驟來為內部 IP 創建一個自簽名證書,並將其放置在客戶端的受信任儲存中機器。
話雖如此,我需要讓內部和外部 IP 同時工作。當我嘗試使用相同的步驟為外部 IP 生成和信任證書時,即使客戶端使用外部 IP,伺服器也會不斷嘗試使用內部 IP 的證書。這顯然與通過 HTTP 標頭並獲取預設站點的證書有關。因此,即使外部 IP 的證書是受信任的,客戶端電腦在瀏覽外部 IP 上的站點時也會不斷生成安全警告。
完全放棄我之前關於如何使用內部 IP 執行此操作的註釋,如何同時處理內部和外部 IP?如何為兩個 IP 使用自簽名證書,而不在客戶端瀏覽器中生成安全警告?
請注意,這不是重複的。 我知道那裡有關於主題備用名稱、萬用字元證書等的資訊。但是:
- 其中大部分是針對 Apache 的。我正在使用 IIS 7。
- 其中大部分是針對 Linux 的。我正在使用 Windows。
- 它還傾向於處理域名,這似乎是萬用字元證書所必需的;我只使用IP。
- 在這一點上剩下的一些內容期望我在 IIS 或 Windows 中擁有並非普遍可用的選項。
- 剩下的幾件可能有點超出我的想像,他們使用的步驟需要一些預先存在的知識,而這些知識並不存在。換句話說,他們跳過步驟,跳到高級主題等。
假設伺服器是 IIS 7 / Windows Server 2008 R2,並且客戶端機器使用的是 Windows 7(有時是 Windows Embedded Standard)和不同版本的 IE,那麼完成這項工作的明確步驟列表是什麼?客戶端通過 IP 地址訪問頁面、Web 服務等,我一直在使用 OpenSSL(儘管我對其他選項持開放態度)。謝謝你。
有關正確的方法,請參閱 Massimo 的答案。
否則,您可以通過創建具有以下內容的配置文件(以及您想要的任何其他選項)將 IP 添加到證書的 SAN:
[ v3_ca ] subjectAltName = IP:1.2.3.4
或者,如果您有一堆 IP….
[ v3_ca ] subjectAltName = @alt_names [alt_names] IP.1 = 1.2.3.4 IP.2 = 2.3.4.5 IP.3 = 3.4.5.6
然後發出正常的 OpenSSL 命令以創建具有以下添加的證書:
-extfile configuration_file_mentioned_above.cnf -extensions v3_ca
openssl x509 -req
注意:如果您遇到問題,上述行通常以開頭。最簡單的有效配置文件是這樣的(我將其保存為
example.cfg
):[req] distinguished_name = req_distinguished_name x509_extensions = v3_ca [ req_distinguished_name ] commonName = TypeCommonNameHere [v3_ca] subjectAltName = @alt_names [alt_names] IP.1 = 203.0.113.1 IP.2 = 192.0.2.1 IP.3 = 198.51.100.1
然後執行:
openssl req -x509 -nodes -days 3653 -newkey rsa:2048 -keyout example.key -out example.pem -config example.cfg
它將詢問證書的通用名稱,並用私鑰和公鑰(分別)寫出 example.key 和 example.pem。此外,您必須將 IP 放入配置文件中,但不能將公用名放入其中(可以,但在 OpenSSL 提示時仍需要輸入)。
此外,這個例子使用了一個完整的配置文件,上面的原始答案假設你已經有一個配置文件,並用擴展配置文件中的 SAN 資訊來擴充它(這可能只是更令人困惑,但我沒有的原因使用原始答案中給出的參數)