隨著 Internet 上的電子商務的發展,安全網絡通信的需求也在日益增加。另外,私有網絡之上的企業內部通信經常會包含需要加以保護的機密信息。本文將介紹如何為 iSeries 和 pSeries 服務器上的 Linux 系統的 IBM HTTP Server 配置安全套接字層(SSL),從而建立安全的連接。
安全套接字層(SSL)簡介
安全套接字層是用于服務器之上的一個加密系統,它可以確保在客戶機與服務器之間傳輸的數據仍然是安全與隱密的。要使服務器和客戶機使用 SSL 進行安全的通信,服務器必須有兩樣東西:
SSL 使用安全握手來初始化客戶機與服務器之間的安全連接。在握手期間,客戶機和服務器對它們將要為此會話使用的密鑰及加密方法達成一致??蛻魴C使用服務器證書驗證服務器。握手之后,SSL 被用來加密和解密 HTTPS(組合 SSL 和 HTTP 的一個獨特協議)請求和服務器響應中的所有信息,包括:
在本文中,我們將使用一個自簽證書,可以用它來進行測試。不過,在任何實際使用情況中,您都應該有一個由受信任的認證中心(Trusted Certificate Authority)頒發的證書。
開始之前
為了在 IBM HTTP 服務器上配置 SSL,您需要安裝 HTTP 服務器。運行 IBM WebSphere Application Server V5 的安裝程序,選擇安裝 HTTP 服務器(安裝或者不安裝應用服務器(Application Server)都可以),可以完成這項任務。在 “ Installing WebSphere Application Server V5.0 for Linux on iSeries and pSeries”一文中,您可以深入了解 WebSphere Application Server 的安裝。
另外,為了配置 IBM HTTP 服務器,我們將使用 IBM HTTP 管理服務器(Administration Server)瀏覽器界面。這個界面使用了 Microsoft Internet Explorer 組件。所以,您必須在 Windows 系統上使用 Internet Explorer 訪問 HTTP 管理服務器。這個 Windows 系統必須可以通過網絡訪問運行管理服務器的 POWER 服務器上的 Linux。
配置安全連接
為了擁有一個安全的網絡連接,您必須完成下面四個步驟:
- 創建一個新的密鑰數據庫,或者使用一個已有的數據庫和一個密鑰。
- 從認證中心接收一個服務器證書,或者使用 IBM 密鑰管理工具(Key Management Utility,iKeyman)創建一個自簽署的服務器證書。
- 使用 IBM 管理服務器設置 SSL。
- 測試服務器的安裝和配置。
IBM 密鑰管理工具(iKeyman)是一個用來管理數字證書的圖形用戶界面工具。該工具可以用來創建新的密鑰數據庫或者測試數字證書,向數據庫添加認證中心(CA)的根,將證書從一個數據庫復制到另一個數據庫,以及通過 CA 請求和接收數字證書。
第 1 部分:創建一個新的密鑰數據庫
密鑰數據庫是一個文件,服務器用它來存儲一個或多個密鑰對和證書。您可以為所有密鑰對和證書使用一個密鑰數據庫,或者創建多個數據庫。您可以創建一個新的密鑰數據庫,或者可以使用一個已有的密鑰數據庫。完成下面的步驟,創建一個新的密鑰數據庫:
- 首先,創建一個存儲密鑰數據庫的目錄(例如:/opt/IBMHttpServer/keys/)。這是個好主意,因為在您實際創建那些文件之前,這個文件夾/目錄必須已經存在。
- 在運行密鑰管理工具之前,設置正確的 Java 路徑。在我們的文章中,我們將使用與 WebSphere Application Server 一起安裝的 Java 運行環境,使用下面的命令:
# export JAVA_HOME=/opt/WebSphere/AppServer/java
- 要啟動密鑰管理程序,需要先打開終端窗口,切換到 /opt/IBMHttpServer/bin 目錄,然后執行下面的命令:
# ./ikeyman
- 應該會出現一個 IBM 密鑰管理屏幕。選擇 Key Database File > New… 來創建一個新的數據庫。
- 在 New 窗口中,輸入密鑰數據庫名稱(例如:key.jks)和上面創建的密鑰文件夾的路徑。
- 打開 Password Prompt 窗口,創建一個密碼,比如 passw0rd(要求至少有 6 個字符)。
Password Strength 準則:通過顯示的鑰匙符號的數目(最多 5 把鑰匙),您可以看到密碼的強度的變化。當您輸入了一個由包含特殊字符的大小寫混合的文字數字式字符構成的復雜密碼后,您可以看到會顯示出 5 把鑰匙,比如下面的例子:MickeyMouse43@#0243。
- 關閉 IBM 密鑰管理窗口(Key Database File > Exit).
第 2 部分:創建一個自簽證書
自簽數字證書是您頒發給自己的臨時數字證書,所以您自己就是 CA。
注意:不要使用自簽數字證書發布一個產品化應用程序。因為沒有瀏覽器或客戶機可以使用一個自簽證書來識別出您的服務器并與之通信。
使用 IKEYMAN 創建一個自簽署的服務器證書,以便啟用客戶機與服務器之間的 SSL 會話。
- 在命令行中運行 ikeyman,啟動密鑰管理。
- 通過 Key Database File > Open 打開密鑰數據庫。在 Open 對話框中,找到密鑰數據庫名稱,例如 /opt/IBMHttpServer/keys/key.jks,然后單擊 Open。
- 當 Password Prompt 窗口打開后,輸入您在上一節中創建的密碼。
- 在 Key Database 內容幀的下拉列表中選擇 Personal Certificates,然后單擊 New Self-Signed… 按鈕。
-
在 Create New Self-Signed Certificate 窗口中,您需要知道用于這兩個域的以下信息(其他域不言自明):
Key label —— 輸入一個名稱,以便在數據庫中識別密鑰和證書(例如:power)。在設置 HTTP 服務器啟用 SSL 時,需要記得這個名稱。
Common name —— 輸入 Web 服務器的完全主機名作為通用名稱(例如:www.myserver.com)。
Organization —— 您需要在這個字段中輸入一些信息(例如:公司或者組織的名稱)。
- 完成這項操作后,單擊 OK。
- 可以確認新的 Personal Certificate 是否已經成功創建,其名稱顯示在 Personal Certificate 面板中(比如 power)。
- 關閉 IBM 密鑰管理窗口(Key Database File > Exit)。
現在,您就已經為使用 IBM HTTP 管理服務器設置 SSL 做好準備了。
第 3 部分:使用 IBM 管理服務器設置安全套接字層
在配置 SSL 之前,需要為 IBM HTTP 服務器創建一個管理員用戶。完成這項任務的最好方法是,創建一個管理員組,將用戶添加到該組中,然后將權限賦與這個組,而不是賦與用戶。
- 執行下面的命令來創建一個管理員組:
# groupadd httpadm
- 執行下面的命令,創建一個用戶,并使其成為上面創建的組的成員:
# useradd -g httpadm httpadm
- 默認情況下,root 用戶有對 httpd.conf 文件的讀寫權限,httpadm 組對 httpd.conf 文件只有讀權限。因此,需要執行下面的命令將擁有該文件的組改為 httpadm:
# chgrp httpadm httpd.conf
- 我們需要將對 httpd.conf 文件(在 /opt/IBMHttpServer/conf 目錄下)的寫權限賦與 httpadm 組。請執行下面的命令:
# chmod g+r,g+w httpd.conf
- 我們還需要修改 admin.conf 文件中的 User 和 Group 條目。注釋出現有的條目,并添加 User httpadm 和 Group httpadm 的條目??梢允褂?vi 編輯器來編輯 admin.conf 文件。
# vi admin.conf
輸入 User httpadm 和 Group httpadm。
- 使用下面的命令重新啟動 IBM HTTP 服務器(Apache Control)和 IBM HTTP 管理服務器(Admin Control):
# /opt/IBMHttpServer/bin/apachectl stop # /opt/IBMHttpServer/bin/adminctl stop # /opt/IBMHttpServer/bin/apachectl start # /opt/IBMHttpServer/bin/adminctl start
- 在網絡上任意一個 Windows 系統中打開一個 Internet Explorer 窗口,并輸入地址 http://<fully_qualified_domain_name>:8008/admin/,以打開 IBM HTTP 管理控制臺。在對用戶標識和密碼的提示中,單擊 Cancel。
- 核對創建用戶標識的命令。
- 在 POWER eServer 系統中,為 root 用戶創建一個 HTTP 管理控制密碼(比如 passw0rd)。
# cd /opt/IBMHttpServer/bin # ./htpasswd -cm /opt/IBMHttpServer/conf/admin.passwd root New password: passw0rd Re-type new password: passw0rd
- 在網絡上任意一個 Windows 系統中打開一個 Internet Explorer 窗口,并輸入地址 http://<fully_qualified_domain_name//>:8008/admin/,以打開 IBM HTTP 管理控制臺。
- 使用用戶標識 root 和密碼 pass0rd 登錄。這將打開 Getting Started 面板(用于 IBM HTTP 服務器)。等待左邊的導航面板出現(標題為 IBM Administration Server),然后遵循下面的第 1 步到第 6 步來配置 SSL。
第 1 步:設置安全模塊
在左邊的導航窗格中,單擊 Basic Settings 前的箭頭,展開樹,并在樹中選擇 Module Sequence。Module Sequence 面板將會打開,并顯示出 Scope: <GLOBAL>。這是默認的范圍。單擊 Add,然后單擊 Select a module to add 單選按鈕。展開列表,轉到列表的底部,在列表中選擇 ibm_ssl。模塊被放置在右邊的域中。單擊 Apply,將模塊添加到活動服務器模塊列表。單擊 Close,然后單擊 Submit。
第 2 步:為安全服務器設置安全主機 IP 和另外的端口
在樹中的 Basic Settings 下,單擊 Advanced Properties。Module Sequence 面板將會打開,并顯示出 Scope: <GLOBAL>。向下滾動,并單擊 Specify additional ports and IP addresses 字段中的 Add。保留 IP 地址域為空(可選的),但在 Port 字段中輸入 443。單擊 Apply 添加端口。然后單擊 Close。向下滾動,并單擊 Submit。
第 3 步:為安全的服務器設置虛擬主機結構
在左邊的導航窗格中,單擊 Configuration Structure 前面的箭頭。單擊 Create Scope,打開 Create Scope 窗格。展開 Select a valid scope to insert within the scope selected in the right panel 列表,并選擇 VirtualHost。在 Enter the virtual host IP address or fully qualified domain name 字段中,輸入 Web 服務器的完全主機名。并在 Virtual host port 字段中輸入 443。保留 Server name 字段為空。該字段只是用來重定向 URL。 HTTP 服務器通過其本身的 IP 地址來確定服務器(主機)名。保留 Alternate names for host 字段為空。然后單擊 Submit。
第 4 步:為安全的服務器設置虛擬主機文檔的根
在樹中的 Basic Settings 下,單擊 Core Settings。單擊 Scope;選擇您上面創建的虛擬主機。輸入服務器名稱,比如完全的域名。輸入文檔根目錄,比如 /opt/IBMHTTPServer/htdocs/en_US。單擊 Submit。
第 5 步:為安全的服務器設置密鑰文件和 SSL 超時值
在左邊的導航窗格中,單擊 Security 前面的箭頭,展開樹。單擊樹中的 Server Security,打開 Server Security 窗口。在 Scope 按鈕后顯示出您為 SSL 創建的虛擬主機名。在 Server Security 窗口中,選擇 Enable SSL: Yes 單選按鈕。在 Keyfile file name 字段中,輸入路徑和密鑰文件的文件名。在我們的例子中是 /opt/IBMHttpServer/keys/key.jks。輸入一個 SSL 版本 2 會話 ID 超時值(100 秒)和一個 SSL 版本 3 會話 ID 超時的時間值(1000 秒)。單擊 Submit。
第 6 步:啟用 SSL,并選擇客戶機認證的模式
在樹中 Security 下,單擊 Host Authorization,打開 Host Authorization 窗口。注意,在 Scope 按鈕的后面,顯示出了您為 SSL 創建的虛擬主機名。在 Host Authorization 窗口中,選擇 Enable SSL: Yes 單選按鈕,為虛擬安全主機啟用 SSL,然后選擇 Mode of client authorization to use: None 單選按鈕。在 Server certificate to be used for this virtual host 字段中,輸入先前創建的服務器證書名。在我們的例子中,該名稱為 power。在 Cipher specifications that can be used in a secure transaction 窗口中,單擊 Add。依次單擊規范 39、規范 3A、規范 62 和 規范 64,然后添加它們,接著單擊 Apply。最后單擊 Submit。
- 單擊右邊窗格的右上角問號 (?) 旁邊的黑色圓形圖標,重新啟動 HTTP 服務器,或者使用 shell 命令來重新啟動 HTTP 服務器。
第 4 部分:測試服務器安裝和配置
配置了安全套接字層之后,使用三個快速測試來測試服務器的安裝。
- http 連接測試。
- https(SSL)連接測試。
- 查看配置文件。
測試 http 連接
在 web 瀏覽器中輸入 URL:http://your_host/。
您將看到 web 服務器的主頁。
測試 https(SSL)連接
在 Web 瀏覽器中輸入 URL:https://your_host/。
特別注意的是:不會為 SSL 而啟用 localhost(127.0.0.1)界面。您必須使用外部主機名來訪問 SSL。
查看配置文件并確認設置
找到配置文件(/opt/IBMHttpServer/conf/httpd.conf),并用一個文本編輯器來查看它。在 httpd.conf 文件的底部,應該會有類似如下的內容:
|