一旦取得憑證之後,即可開始保護伺服器的安全性。Sun Java System Web Proxy Server 提供了多種安全性元素,在本小節中將對其加以討論。
加密是指轉換資訊的程序,以便除了指定的收件者之外的其他任何人無法理解此資訊。解密是指轉換加密資訊的程序,讓資訊再次變得能夠理解。Proxy Server 支援安全通訊端層 (SSL) 和傳輸層安全性 (TLS) 加密協定。
密碼是一種加密演算法 (數學函數) ,用於加密或解密。SSL 和 TLS 協定包含大量密碼組。有些密碼會比其他密碼更強、更安全。一般而言,密碼使用的位元越多,解密資料便越困難。
在任何雙向加密程序中,雙方都必須使用相同的密碼。由於有大量密碼可供使用,因此必須讓伺服器使用最常用的密碼。
在安全連線時,用戶端和伺服器一致使用雙方均具有的最強密碼來進行通訊。您可以從 SSL 2.0、SSL 3.0 和 TLS 協定中選擇密碼。
在 SSL 2.0 之後,SSL 的安全性和效能進行了各種改進。除非用戶端無法使用 SSL 3.0,否則請勿使用 SSL 2.0。用戶端憑證不一定適用 SSL 2.0 加密。
僅加密程序本身不足以確保伺服器的機密資訊安全。金鑰必須搭配加密密碼一起使用,才能產生實際的加密效果,或是為先前加密的資訊進行解密。加密程序使用兩個金鑰來達到這個效果:公開金鑰和私密金鑰。使用公開金鑰加密的資訊只能透過相關聯的私密金鑰進行解密。公開金鑰附屬於憑證一起發佈。僅相關聯的私密金鑰才會受到保護。
如需有關各種密碼組的說明以及金鑰和憑證的更多資訊,請參閱「SSL 簡介」。
您可以指定伺服器可以使用的密碼。除非您有不使用特定密碼的充分理由,否則應該選取全部密碼。不過建議您不要啟用未採用最佳化加密的密碼。
請勿選取 [Enable No Encryption, Only MD5 Authentication]。如果用戶端沒有其他可用的密碼,伺服器會預設為使用此設定,因此不進行任何加密。
本小節包含以下主題:
Proxy Server 支援用於加密通訊的 SSL 和 TLS 協定。SSL 和 TLS 與應用程式無關,並且可以在其上放置更高層級的協定 (不需設定)。
SSL 和 TLS 協定支援多種密碼,這些密碼用於讓伺服器和用戶端互相認證、傳輸憑證以及建立階段作業金鑰。用戶端和伺服器可以支援各種密碼組或密碼集,這取決於各種因素,例如所支援的協定、公司有關加密強度的策略以及政府對加密軟體的出口限定。在其他函式中,SSL 和 TLS 交換協定將決定伺服器和用戶端如何協商以確定將用於通訊的密碼組。
您應該要求 Administration Server 使用 SSL 與 LDAP 進行通訊。
在此情況下,Proxy Server 扮演 SSL 用戶端的角色,且必須已匯入用來簽署 SSL 伺服器 LDAP 憑證的根 CA 憑證。若 LDAP 的 SSL 憑證不是由眾所皆知的 CA 核發,則必須將所使用的 CA 根金鑰匯入 Proxy Server 金鑰庫中。
存取 Administration Server,然後按一下 [Global Settings] 標籤。
按一下 [Configure Directory Service] 連結。
在所顯示的表格中,按一下目錄服務連結。
此時會顯示 [Configure Directory Service] 頁面。若尚未建立 LDAP 型的目錄服務,請從 [Create New Service of Type] 下拉式清單中選取 [LDAP Server],然後按一下 [New] 以配置目錄服務。如需有關 LDAP 型目錄服務所顯示之特定欄位的更多資訊,請參閱線上說明。
選取 [Yes]、使用 SSL 進行連線,然後按一下 [Save Changes]。
向前執行 Proxy Server (代理伺服器),並且用戶端請求經由代理伺服器與安全伺服器進行 SSL 連線時,代理伺服器會開啟與安全伺服器的連線,並在不干預安全作業事件的情況下,進行雙向資料複製。此程序稱為 SSL 通道傳輸,並在下圖中說明。
若要以 HTTPS URL 使用 SSL 通道傳輸,用戶端必須同時支援 SSL 和 HTTPS。HTTPS 是使用 SSL 和一般 HTTP 進行實作的。不支援 HTTPS 的用戶端仍可使用 Proxy Server 的 HTTPS 代理處理功能存取 HTTPS 文件。
SSL 通道傳輸為較低層級的活動,並不會影響應用程式層級 (HTTPS)。SSL 通道傳輸和沒有使用代理伺服器的 SSL 一樣安全。存在於兩者之間的代理伺服器並不會以任何方式影響安全性,或是降低 SSL 的功能。
使用 SSL 會將資料流加密,以致代理伺服器無法存取實際的作業事件。因此,存取記錄便無法列出來自遠端伺服器的狀態碼或標頭長度。此程序也能防止代理伺服器或任何第三方竊聽作業事件。
由於代理伺服器絕對看不到資料,因此無法驗證用戶端和遠端伺服器之間所使用的通訊協定是否為 SSL。因此代理伺服器也無法防止其他協定由此通過。您應該限定 SSL 連線僅連接至眾所皆知的 SSL 連接埠,即網際網路網址分配機構 (IANA) 所指定的連接埠 443 (針對 HTTPS) 和 563 (針對 SNEWS)。若網站在其他連接埠上執行安全伺服器,則可以使用 connect://.* 資源明訂例外,允許連線至特定主機的其他連接埠。
SSL 通道傳輸功能實際上是與協定無關、類似 SOCKS 的一般功能,因此也可以將此功能用於其他服務。除 HTTPS 和 SNEWS 協定外,Proxy Server 還可以為支援 SSL 的所有應用程式處理 SSL 通道傳輸。
下列程序說明如何配置 Proxy Server 以進行 SSL 通道傳輸。
從 Server Manager 存取伺服器實例,然後按一下 [Routing] 標籤。
按一下 [Enable/Disable Proxying] 連結。
從下拉式清單中選取 connect://.*.443 資源。
connect:// 方法為內部代理伺服器表示法,該表示法在代理伺服器外部並不存在。如需有關 connect 的更多資訊,請參閱SSL 通道傳輸的技術詳細資訊。
若要允許連線至其他連接埠,可以在範本中使用類似的 URL 式樣。如需有關範本的更多資訊,請參閱第 16 章管理範本和資源。
選取 [Enable Proxying Of This Resource],然後按一下 [OK]。
如果代理伺服器配置錯誤,則可能會有人利用伺服器,使 telnet 連線看似來自代理主機而不是實際的連線主機。因此,請勿使用超過絕對必要數量的連接埠,並請對代理伺服器使用存取控制以限制用戶端主機。
SSL 通道傳輸在內部使用 CONNECT 方法時,以目標主機名稱和連接埠號為參數,後跟空白行:
CONNECT energy.example.com:443 HTTP/1.0
下列範例顯示的是來自 Proxy Server 的成功回應,後跟空白行:
HTTP/1.0 200 Connection establishedProxy-agent: Sun-Java-System-Web-Proxy-Server/4.0
接著就會在用戶端和遠端伺服器之間建立連線。資料可進行雙向傳輸,直至其中一方關閉連線。
從內部來看,為了使根據 URL 式樣的一般配置機制發揮優點,主機名稱和連接埠號會自動對映至 URL,如下所示:
connect://energy.example.com:443
connect:// 是 Proxy Server 所使用的內部表示法,用於簡化配置,並與其他 URL 式樣更為一致。在 Proxy Server 的外部,connect URL 並不存在。若 Proxy Server 從網路收到此類 URL,則會將其標記為無效,並拒絕服務該請求。
您可以透過執行下列作業來保護伺服器偵聽通訊端的安全性:
開啟安全性
為偵聽套接字選取伺服器憑證
選取密碼
您只能在反向代理模式中啟用安全性,不能在正向代理模式中啟用。
必須先開啟安全性,然後才能為偵聽通訊端配置其他安全性設定。您可以在建立新偵聽通訊端或編輯現有偵聽通訊端時開啟安全性。
存取 Administration Server 或 Server Manager,然後按一下 [Preferences] 標籤。
按一下 [Add Listen Socket] 連結。
提供所需的資訊。
建立偵聽通訊端之後,使用 [Edit Listen Sockets] 連結來配置安全性設定。
若要開啟安全性,請從 [Security] 下拉式清單中選取 [Enabled],然後按一下 [OK]。
如果尚未安裝伺服器憑證,則只能選擇 [Disabled]。如需有關特定設定的更多資訊,請參閱線上說明。
存取 Administration Server 或 Server Manager,然後按一下 [Preferences] 標籤。
按一下 [Edit Listen Sockets] 連結。
按一下要編輯的偵聽通訊端之連結。
從 [Security] 下拉式清單中選取 [Enabled],然後按一下 [OK]。
如果尚未安裝伺服器憑證,則只能選擇 [Disabled]。
您可以在 Administration Server 或 Server Manager 中配置偵聽通訊端,以便使用您已申請並安裝的伺服器憑證。
必須至少安裝一份憑證。
存取 Administration Server 或 Server Manager,然後按一下 [Preferences] 標籤。
按一下 [Edit Listen Sockets] 連結。
按一下要編輯的偵聽通訊端之連結。
從 [Security] 下拉式清單中選取 [Enabled],然後按一下 [OK]。
如果尚未安裝伺服器憑證,則只能選擇 [Disabled]。
從 [Server Certificate Name] 下拉式清單中,為偵聽通訊端選取伺服器憑證,然後按一下 [OK]。
若要保護 Proxy Server 的安全性,應該啟用 SSL。您可以啟用 SSL 2.0、SSL 3.0 和 TLS 加密協定並選取各種密碼組。可以在 Administration Server 的偵聽通訊端上啟用 SSL 和 TLS 協定。在 Server Manager 的偵聽通訊端上啟用 SSL 和 TLS,即可設定特定伺服器實例的相關安全性喜好設定。必須至少安裝一份憑證。
您必須將 Proxy Server 配置為執行反向代理伺服器功能,才能在偵聽通訊端上啟用 SSL。
預設設定允許大多數常用密碼。除非有充分理由不使用特定密碼組,否則應該選取全部密碼。
[TLS Rollback] 的預設和建議設定皆為 [Enabled]。此設定可將伺服器配置為可偵測「中間人版本回復」的攻擊企圖。為了與某些未正確實作 TLS 規格的用戶端實現互通功能,可能需要將 [TLS Rollback] 設定為 [Disabled]。
停用 [TLS Rollback] 將導致連線無法抵擋版本回復的攻擊。版本回復攻擊機制讓第三方強制用戶端和伺服器使用較舊、較不安全的協定 (如 SSL 2.0) 進行通訊。由於 SSL 2.0 協定有已知缺陷,若無法偵測「版本回復」的攻擊企圖,第三方便更容易截取已加密的連線並進行解密。
存取 Administration Server 或 Server Manager,然後按一下 [Preferences] 標籤。
按一下 [Edit Listen Sockets] 連結,然後按一下要編輯的偵聽通訊端連結。
對於安全的偵聽通訊端,系統會顯示可用的密碼設定。
若未啟用偵聽通訊端的安全性,則不會列出 SSL 和 TLS 資訊。若要使用密碼,請確定已在選取的偵聽套接字上啟用了該安全性。如需更多資訊,請參閱為偵聽通訊端啟用安全性。
選取與所需加密設定對應的核取方塊,然後按一下 [OK]。
為 Netscape Navigator 6.0 同時選取 TLS 和 SSL 3.0。此外也為 [TLS Rollback] 選取 [TLS],並確認 SSL 3.0 和 SSL 2.0 皆已停用。
一旦在伺服器上啟用 SSL 之後,其 URL 便會使用 https 而非 http。指向啟用 SSL 伺服器上文件的 URL 格式如下: https://servername.domain .dom: port,例如 https://admin.example.com:443
如果使用預設的安全 HTTP 連接埠 (443),則不需要在 URL 中輸入連接埠號。
安裝啟用 SSL 的伺服器時,會在 magnus.conf 檔案 (全域安全性參數的伺服器主要配置檔案) 中建立指令項目。
SSLSessionTimeout 指令用於控制 SSL 2.0 階段作業的快取,其語法為:
SSLSessionTimeout seconds
其中 seconds 是快取的 SSL 階段作業保持有效的秒數。預設值為 100。如果指定了 SSLSessionTimeout 指令,秒數的值將自動限定為 5 到 100 秒之間。
指定可以快取的 SSL 階段作業的數目。
SSL3SessionTimeout 指令用於控制 SSL 3.0 和 TLS 階段作業快取,其語法為:
SSL3SessionTimeout seconds
其中 seconds 是快取的 SSL 3.0 階段作業保持有效的秒數。預設值為 86400 秒 (24 小時)。如果指定了 SSL3SessionTimeout 指令,秒數的值將自動限定為 5 到 86400 秒之間。
從 Server Manager 存取伺服器實例。
確定為要配置的偵聽套接字啟用了安全性。
如需更多資訊,請參閱為偵聽通訊端啟用安全性。
手動編輯 magnus.conf 檔案,並為下列設定提供值:
SSLSessionTimeout
SSLCacheEntries
SSL3SessionTimeout
如需有關 magnus.conf 的更多資訊,請參閱「Sun Java System Web Proxy Server 4.0.8 Configuration File Reference」。