Ssl

單個伺服器上的多個 IP、一些 SSL 和 SVN 給事情帶來麻煩

  • March 2, 2011

我們有兩個站點,兩個 IP 僅使用埠 80,一個 SVN 儲存庫在其中一個 IP 上使用 443。當我嘗試為兩個站點之一設置 SSL 時(使用 SVN 未使用的 IP),它拒絕啟動,因為它聲稱 443 已在使用中,即使它應該使用完全獨立的智慧財產權。

我們有一個帶有 Windows Server 2003 x64 的 Web 伺服器,執行 IIS 6。我們有兩個域,每個域都映射到自己的 IP。假設站點 A 映射到 1.1.1.1,站點 B 映射到 2.2.2.2。SVN 設置為監聽 1.1.1.1:443,而站點 A 和 B 分別監聽 1.1.1.1:80 和 2.2.2.2:80。這工作得很好,直到我嘗試將站點 B 設置為監聽 2.2.2.2:443,在這種情況下,站點 B 將無法啟動,如上所述。如果我停止 SVN,那麼我可以啟動 Web 服務(包括 2.2.2.2:443 上的那個),但是當嘗試再次啟動 SVN 時,它會給出相同的基本“已在使用”錯誤。但是當他們都在監聽埠 443 時,他們是在不同的 IP 上這樣做的,我認為這應該可以工作。

我用過netstat,看到 SVN 確實在 1.1.1.1:443 處監聽,而不是 0.0.0.0:443(這意味著它正在監聽所有 IP,我認為?)。它以前被配置為偵聽“任何”IP,我認為我可以通過將其設置為僅偵聽 1.1.1.1 來解決我的問題,但進行該更改沒有任何效果。沒有其他東西在監聽 443。同樣,在 IIS 中設置的兩個站點設置為僅查找它們各自的 IP,而不是“任何未分配”,當我將站點 B 設置為在埠 443 使用 SSL 時,我同樣限制它僅 IP 2.2.2.2。

考慮到我可以讓Web服務SVN 正常執行,但不能同時執行,它們之間的衝突似乎很簡單。但是他們的獨立 IP 不應該解決這個衝突嗎?

好吧,我不想回答我自己的問題,但我似乎遇到了一個修復,儘管我懷疑這是一個通用的解決方案。

這篇知識庫文章似乎引用了我的確切問題:

IIS 6.0 中有兩個網站。網站 1 綁定到 10.10.10.2:80 用於 HTTP 流量。網站 1 也綁定到 10.10.10.2:443 以進行 SSL 流量。網站 2 僅針對 HTTP 流量綁定到 10.10.10.3:80。

在這種情況下,當您使用 netstat 命令查看電腦正在偵聽的埠時,您可能會注意到 IIS 6.0 綁定到兩個 IP 地址上的埠 80 和埠 443。

從他們的解決方案中,我不得不向系統資料庫添加一個新值。因此,在 key 下HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters,我必須添加 DWORD 值DisableEndpointSharing,並將其設置為1. 他們解決方案的第二部分不適用(執行httpcfg query iplisten告訴我 IP 偵聽列表已經為空)。

添加上述系統資料庫值並重新啟動 IIS 後,站點 B 現在顯示netstat為綁定到 2.2.2.2:443 而不是 0.0.0.0:443,我可以啟動綁定到 1.1.1.1:443 的 SVN 沒有任何問題。

所以至少在這種情況下,我認為這只是一個已知問題,有一種解決方法以某種方式應用於我們的配置。

建議為 SVN 使用埠 8443,它就像一個輔助 ssl 埠。它類似於埠 8080 到 80。然後將埠 443 分配給網站應該不會有任何問題。

確保您的路由器將 SVN 的埠轉發設置為 8443

您還可以在安全埠 22 上使用 SVN+ssh

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