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


