Windows-Server-2008-R2

生成自簽名證書的步驟,該證書在被信任後將適用於兩個不同的 IP,而不會出現安全警告

  • September 2, 2014

我們有一個測試伺服器,我正在嘗試轉換為 HTTPS/SSL,它同時具有內部 IP 和外部 IP。我們必須為此特定伺服器使用自簽名證書。過去有一次我用 Flash 對 RTMPS 進行了一些研發,所以我仍然有一系列步驟來為內部 IP 創建一個自簽名證書,並將其放置在客戶端的受信任儲存中機器。

話雖如此,我需要讓內部和外部 IP 同時工作。當我嘗試使用相同的步驟為外部 IP 生成和信任證書時,即使客戶端使用外部 IP,伺服器也會不斷嘗試使用內部 IP 的證書。這顯然與通過 HTTP 標頭並獲取預設站點的證書有關。因此,即使外部 IP 的證書是受信任的,客戶端電腦在瀏覽外部 IP 上的站點時也會不斷生成安全警告。

完全放棄我之前關於如何使用內部 IP 執行此操作的註釋,如何同時處理內部和外部 IP?如何為兩個 IP 使用自簽名證書,而不在客戶端瀏覽器中生成安全警告?

請注意,這不是重複的。 我知道那裡有關於主題備用名稱、萬用字元證書等的資訊。但是:

  1. 其中大部分是針對 Apache 的。我正在使用 IIS 7。
  2. 其中大部分是針對 Linux 的。我正在使用 Windows。
  3. 它還傾向於處理域名,這似乎是萬用字元證書所必需的;我只使用IP。
  4. 在這一點上剩下的一些內容期望我在 IIS 或 Windows 中擁有並非普遍可用的選項。
  5. 剩下的幾件可能有點超出我的想像,他們使用的步驟需要一些預先存在的知識,而這些知識並不存在。換句話說,他們跳過步驟,跳到高級主題等。

假設伺服器是 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 資訊來擴充它(這可能只是更令人困惑,但我沒有的原因使用原始答案中給出的參數)

引用自:https://serverfault.com/questions/624408