關於數字證書部分可以用openssl做的,也是個開源的軟件,前不久剛剛發布了1.0版本。下面開始數字證書相關操作。
1、下載、安裝openssl
Openssl建議大家用1.0版本,畢竟是正式版本。不要用OpenSSL 0.9.8h這個版本(有個bug,會影響到後面的操作)。安裝後從命令行進入安裝目錄下的bin目錄。Ready! GO!。
2、創建CA的私鑰
執行以下命令openssl genrsa -des3 -out ../demo/ca/ca.key 1024
demo是工作目錄,接下來會提示輸入密碼,後面用到的密碼會很多,最好都認真記下來。
3、創建CA證書
openssl req -new -x509 -key ../demo/ca/ca.key -out ../demo/ca/ca.crt -days 365
x509是壹種加密的標準,-out是指輸出的文件路徑,-key是指定私鑰,也就是上壹步生成的那個,-days是指證書有效期。
註:再輸入common name時可以指定自己的名字,但是不能輸入服務器名(www.XX.X.com)
4、創建server端的私鑰
因為是要在server端提供SSL的webservice,所以在server端需要使用私鑰庫和信任庫。
openssl genrsa -des3 -out ../demo/server/server.key 1024
5、創建server證書簽名請求
可以發送簽名請求到壹個官方的CA機構,這些機構都是要收費的,而且還要嚴格審核,至於自己開發過程中的話實在是沒必要。直接發送到剛才通過openssl構建的CA就可以了。
openssl req -new -key ../demo/server/server.key -out ../demo/server/server.csr
註意這裏的common name,此處填寫妳的服務器的ip或者域名,例如localhost,也就是要為哪臺服務器做證書就指定那臺機器。
6、CA簽署server證書
如果是第壹次通過CA簽署證書的話,執行如下命令
openssl x509 -req -days 30 -in ../demo/server/server.csr -CA ../demo/ca/ca.crt -CAkey ../demo/ca/ca.key -CAcreateserial -out ../demo/server/server.crt
其中的-CAcreateserial是指創建壹個新的序列文件。這樣openssl會在當前目錄下創建壹個名為ca.srl的文件存儲序列號。下次再次簽署證書時就可以直接指定這個序列文件了。命令如下:openssl x509 -req -days 30 -in ../demo/server/server.csr -CA ../demo/ca/ca.crt -CAkey ../demo/ca/ca.key -CAserial .srl -out ../demo/server/server.crt
輸入CA私鑰的密碼後簽署成功。
7、創建server端的pkcs12文件
openssl pkcs12 -export -in ../demo/server/server.crt -inkey ../demo/server/server.key -out ../demo/server/server.p12 -name demo_server
註意其中的-name demo_server,這個是指定keystore的別名,記下來,很重要(weblogic要用到,網上的資料都沒有這個參數)。
8、轉換pkcs12為JKS keystore文件
這個過程需要用到jetty.jar,下載相應jar後添加到classpath,然後執行如下命令
java org.mortbay.util.PKCS12Import ../demo/server/server.p12 ../demo/server/server.jks
在此處輸入上壹步設置到export password。
Server端相關文件就完成了,現在可以用java的keytool命令查看壹下生成的server.jks的內容
keytool -v -list -keystore ../demo/server/server.jks
接下來開始準備client端的相關文件,因為啟用了數字證書的機制,client在通過webservice訪問server時也需要提供自己的證書,也就是server和client相互認證(客戶要求的)。客戶端的相關操作與server端類似,不做過多說明。
9、創建client端的私鑰
openssl req -new -newkey rsa:1024 -nodes -out ../demo/client/client.req -keyout ../demo/client/client.key
10、創建client端證書簽名請求
openssl x509 -CA ../demo/ca/ca.crt -CAkey ../demo/ca/ca.key -CAserial .srl -req -in ../demo/client/client.req -out ../demo/client/client.pem -days 365
11、創建client端的pkcs12文件
openssl pkcs12 -export -clcerts -in ../demo/client/client.pem -inkey ../demo/client/client.key -out ../demo/client/client.p12 -name
12、創建client端的jks文件
java org.mortbay.util.PKCS12Import ../demo/client/client.p12 ../demo/client/client.jks
13、創建信任密鑰庫
這次用到java的keytool命令
keytool -genkey -alias dummy -keyalg RSA -keystore ../demo/server/truststore.jks
到此為止數字證書的部分就完成了,下面介紹壹下tomcat如何配置ssl支持。
14、將CA認證過的證書導入信任庫
keytool -import -v -trustcacerts -alias my_ca -file ../demo/ca/ca.crt -keystore ../demo/server/truststore.jks
通過下面的命令可以查看信任庫的詳細信息
keytool -v -list -keystore ../demo/server/truststore.jks
二、 tomcat ssl支持的配置
1. 在tomcat的server.xml中添加壹個新的connector,配置如下
<Connector port="8443" maxHttpHeaderSize="8192"
SSLEnabled="true"
maxThreads="150"
minSpareThreads="25"
maxSpareThreads="75"
enableLookups="false"
disableUploadTimeout="true"
acceptCount="100"
scheme="https"
secure="true"
clientAuth="false"
sslProtocol="TLS"
keystoreFile="/conf/server.jks"
keystorePass="XXXXXX"
algorithm="SunX509"
/>
註:keystoreFile對應server端的jks文件,keystorePass對應其密碼
2. 重啟tomcat,在瀏覽器中敲入https://localhost:8443/測試壹下
通過https訪問web功能時需要在瀏覽器中導入證書,因為我們主要解決webservice的ssl,關於瀏覽器如何導證書就不做介紹了。
Tomcat的配置就這麽簡單。
三、 weblogic9.2 ssl配置
weblogic通過控制臺就可以完成ssl的配置,以下是部分截圖
1. 登錄weblogic控制臺 ,點擊頁面左端所屬域下的:環境>>服務器>> 點擊所屬服務器進行編輯,在常規選項卡中作如下配置,如圖(註意紅色區域):
[img]/admin/blogs/7.jpg" alt="圖7[/img]
2. 切換到私鑰庫選項卡
[img]/admin/blogs/8.jpg" alt="圖8[/img]
註:1.密鑰庫選擇“自定義標識和自定義信任”
2.密鑰庫的位置可以用絕對路徑也可以用相對路徑
3.密碼就是我們在數字證書部分的密碼
3. 切換到SSL選項卡
[img]/admin/blogs/9.jpg" alt="圖9[/img]
註意那個私鑰別名,就是我們在數字證書部分指定的server私鑰的那個別名
好了,保存設置後重啟就可以了。訪問https://localhost:7002/試壹下。