目前網絡上很多描述實現SSL的文章,但是要么是局限于理論,要么是配置單向SSL的,要么是基于Tomcat的,即便是和WebLogic Server相關的,也沒有為讀者提供一個可依照實現的操作。本文參考其它文檔,主要描述了在Windows下如何實現WebLogic Server的雙向SSL配置,并且客戶端和服務器端采用了不同的證書來源,希望能夠為讀者提供一個具有可操作性的參考。
文中的操作 在筆者計算機上完全測試通過。
前期準備
筆者的操作系統是Windows XP SP2,安裝的軟件有
Microsoft Visual Studio 6.0(主要是VC++),安裝目錄MVS_HOME
BEA的WebLogic Server 8.1.5,安裝目錄BEA_HOME
JDK1.4.2.8,安裝WebLogic Server后帶有,目錄為%BEA_HOME%jdk142_08
在實現過程中需要的軟件有:
Perl for win32
下載地址http://www.activestate.com/ActivePerl
Openssl
下載地址http://www.openssl.org
在生成證書和私鑰時,我們使用了 openssl軟件,由于openssl軟件在windows上安裝需要perl環(huán)境,因此我們需要下載Active Perl相關軟件,并且需要安裝VC++或者Delphi,以便編譯安裝openssl。
對于各個軟件的初始化設置,主要是設置環(huán)境 變量,通過“我的電腦”右鍵,“屬性”-“高級”-“環(huán)境變量”,添加如下:
Classpath =%BEA_HOME%weblogic81serverlibweblogic.jar
INCLUDE =%MVS_HOME%VC98Include
LIB =%MVS_HOME%VC98Lib
在Path環(huán)境變 量中增加(編譯openssl使用)
%MVS_HOME%VC98Bin; %MVS_HOME%CommonMSDev98Bin
在Path環(huán)境變量中增加(java相關命令使用)
%BEA_HOME%jdk142_08in;
安裝 openssl
安裝ActivePerl
ActivePerl下載的是.msi文件,點擊后可以安裝,安裝后,在path環(huán)境變量 中增加
%PERL_HOME%in
安裝openssl
下載openssl的壓縮源文件以后,解開壓縮 到目錄openssl-xxxd目錄,通過DOS窗口,進入到openssl-xxxs目錄后,執(zhí)行
perl Configure VC-WIN32 --prefix=c:/openssl
其中c:/openssl為準備安裝openssl的目錄,筆者安裝在 C:openssl目錄下,注意要寫作/,否則會在編譯cversion.c文件時出現錯誤信息。
執(zhí)行msdo_ms
如果上述執(zhí)行沒有錯誤,則創(chuàng)建相應的安裝目錄,然后執(zhí)行
nmake -f ms tdll.mak install
安裝openssl,編譯的時間比較長,請耐心等待,并且確認沒有錯誤。
環(huán)境變量
Openssl安裝成功以后,需要在 path中增加如下的環(huán)境變量
%OPENSSL_HOME%in
增加環(huán)境變量 OPENSSL_CONF=%OPENSSL_HOME%openssl.cnf
建立自己的CA證書
在BEA_HOME下建立目 錄ca,重新啟動DOS窗口,進入到BEA_HOME目錄下。
生成CA密鑰
openssl genrsa -out ca/ca-key.pem 1024
生成待簽名的證書
openssl req -new -out ca/ca-req.csr -key ca/ca-key.pem
在生成待簽名的證書時,會詢問個人或者單位的信息,依次會詢問國 家,省,地區(qū),組織,部門,名稱和郵件信息,并且會詢問一些附加信息,作為測試,讀者可以依據下面的圖片填寫,也可以輸入自己有關的信息。
用 CA私鑰自簽名
openssl x509 -req -in ca/ca-req.csr -out ca/ca-cert.pem -signkey ca/ca-key.pem -days 365
生成WebLogic Server證書
在WebLogic Server這邊,我們會使用它提供的用于demo的私鑰和數字證書,在%BEA_HOME%下創(chuàng)建目錄server,拷 貝%BEA_HOME%weblogic81serverlib下的CertGenCA.der和CertGenCAKey.der文件 到%BEA_HOME%server下。
生成證書,DOS窗口下進入目錄%BEA_HOME%執(zhí)行命令:
java utils.CertGen password serverCertGenCA.der serverCertGenCAKey.der export
將會生成CertGenCA.der.pem和CertGenCAKey.der.pem文件
建立keystore,并且將證書和私鑰 裝入keystore
java utils.ImportPrivateKey servermykeystore password myserver password serverCertGenCA.der.pem serverCertGenCAKey.der.pem
將 CA證書導入到驗證keystore中
keytool -import -v -trustcacerts -storepass password -alias my_ca_root -file ca/ca-cert.pem -keystore server/cacerts
此處如果提示找不到keytool,要看一下JDK in的目錄是否在path變量中設置正確。
如果詢問是否“信任這個認證”,輸 入y回車,可以看到信息說明認證已經添加到keystore中。
顯示驗證keystore內容
keytool -list -keystore server/cacerts
輸入密碼password(我們前面建立keystore是設置的),顯示的內 容應該類似如下:
C:ea>keytool -list -keystore server/cacerts
輸入 keystore密碼: password
Keystore 類型: jks
Keystore 提供者: SUN
您 的 keystore 包含 2 輸入
my_ca_root, 2006-11-21, trustedCertEntry,
認 證指紋 (MD5): 38:32:AC:05:D9:4B:80:ED:43:43:9D:C5:2C:58:72:63
顯示服務器 keystore內容
keytool -list -keystore server/mykeystore
輸入密碼 password(我們前面建立keystore是設置的),顯示的內容應該類似如下:
C:ea>keytool -list -keystore server/mykeystore
輸入keystore密碼: password
Keystore 類型: jks
Keystore 提供者: SUN
您的 keystore 包含 1 輸入
myserver, 2006-11-21, keyEntry,
認證指紋 (MD5): 3D:1E:C1:67:FF:82:5A:4F:AE:18:63:18:97:3C:8E:0D
配置WebLogic Server
建立一個新的WebLogic Server的Domain。
啟動WebLogic Server,通過console登錄進管理界面,進入“myserver”-“Configuration”-“General”,選中“SSL Listen Port Enabled”復選框,并且設定https的端口為7002,進入“myserver”-“Configuration-Keystores & SSL”,點擊“Keystore Configuration”后面的“Change”,選擇“Custom Identity and Custom Trust”,如下圖設置:
其中目錄可根據自己安裝的BEA_HOME進行修改,Pass Phrase部分都輸入“password”。
點擊“Continue”,在“Private Key Alias”中輸入myserver,Pass Phrase部分依然輸入“password”,最后點擊“finish”結束。
回 到“myserver”-“Configuration”-“Keystores & SSL”配置頁面,點擊“Advanced Options”后面的“change”,將“Two Way Client Cert Behavior:”部分修改為“Client certs requested and enforced”。
應用后重新啟動WebLogic Server。
觀察 WebLogic Server啟動時候的控制臺,正確配置后應該有如下類似的信息:
生成客戶端IE證書
建立自己的Client目錄,例 如:client
生成Client密鑰對
openssl genrsa -out client/client-key.pem 1024
生成待簽名的證書
openssl req -new -out client/client-req.csr -key client/client-key.pem
同樣在詢問中輸入個人證書的一些信息,確定后生成。
用CA私 鑰簽名
openssl x509 -req -in client/client-req.csr -out client/client-cert.pem -signkey client/client-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial -days 365
生成Client端可以導入的個人證 書
openssl pkcs12 -export -clcerts -in client/client-cert.pem -inkey client/client-key.pem -out client/client.p12
詢問設置導出密碼時可以 不填寫,直接回車。
將client證書導入IE
在資源管理器中選擇文件client.p12,鼠標右鍵,選擇“安裝 PFX”,在密碼頁,密碼部分可以不輸入,選擇“標志此密鑰為可導出的”的復選框,將證書存儲于“個人”區(qū)域,成功導入后,在IE窗口顯示類似如下:
訪 問WebLogic Server
通過 https://serverip:7002/console/ 訪問WebLogic Server,雖然服務器設置為需要客戶端認證,但是由于我們導入了證書,因此可以訪問。
<2006-11-21 下午10時49分27秒 CST>
<2006-11-21 下午10時49分27秒 CST>
查看WebLogic Server控制臺,可以看到如下信息:
刪除導入的證書,重新 使用 https://serverip:7002/console/ 訪問服務器,則頁面無法打開,控制臺顯示信息如下,說明客戶端證書驗證失敗:
<2006-11-21 下午10時54分53秒 CST>
<2006-11-21 下午10時54分53秒 CST>