轉(zhuǎn)自http://blog.chinaunix.net/u/3641/showart_506402.html
Xfire實(shí)現(xiàn)WSS之創(chuàng)建密鑰對(duì)和數(shù)字證書
簽名和加密需要使用到數(shù)字證書和密鑰對(duì),可以使用JDK提供的KeyTool工具創(chuàng)建密鑰對(duì)和數(shù)字證書。我們分別為服務(wù)端和客戶端創(chuàng)建RSA密鑰
對(duì),并生成各自的數(shù)字證書(包含公鑰和數(shù)字簽名)。服務(wù)端和客戶端擁有各自的密鑰庫(kù)JKS文件,服務(wù)端的密鑰庫(kù)保存服務(wù)端的密鑰對(duì)和客戶端的數(shù)字證書,而
客戶端的密鑰庫(kù)保存客戶端的密鑰對(duì)和服務(wù)端的數(shù)字證書。
下面,我們來看看xfire提供的例子:
<XFIRE_HOME>/examples/ws-security/keys/generateKeyPair.bat批處理文件:
rem @echo off
#接受參數(shù)
echo alias %1
echo keypass %2
echo keystoreName %3
echo KeyStorePass %4
echo keyName %5
創(chuàng)建RSA密鑰對(duì)
keytool -genkey -alias %1 -keypass %2 -keystore %3 -storepass %4 -dname "cn=%1" -keyalg RSA
使用私鑰進(jìn)行自簽名
keytool -selfcert -alias %1 -keystore %3 -storepass %4 -keypass %2
導(dǎo)出數(shù)字證書
keytool -export -alias %1 -file %5 -keystore %3 -storepass %4
<XFIRE_HOME>/examples/ws-security/keys/generateServerKey.bat文件:
下面兩行命名分別調(diào)用generateKeyPair.bat批處理文件為服務(wù)端和客戶端生成密鑰對(duì)
call generateKeyPair.bat server serverpass serverStore.jks storepass serverKey.rsa
call generateKeyPair.bat client clientpass clientStore.jks storepass clientKey.rsa
將服務(wù)端的數(shù)字證書導(dǎo)入客戶端的密鑰庫(kù)
keytool -import -alias server -file serverKey.rsa -keystore clientStore.jks -storepass storepass -noprompt
將客戶端的數(shù)字證書導(dǎo)入服務(wù)端的密鑰庫(kù)
keytool -import -alias client -file clientKey.rsa -keystore serverStore.jks -storepass storepass -noprompt
運(yùn)行該批處理文件后,將分別為服務(wù)端和客戶端生成一個(gè)Java密鑰庫(kù)文件,它們分別擁有一個(gè)自己的密鑰對(duì)和對(duì)方的數(shù)字證書。我們通過表1對(duì)兩者密鑰庫(kù)文件的內(nèi)容進(jìn)行說明:
表1密鑰庫(kù)說明
服務(wù)端Java密鑰庫(kù)
客戶端Java密鑰庫(kù)
對(duì)應(yīng)密鑰庫(kù)文件
serverStore.jks
clientStore.jks
密鑰庫(kù)密碼
storepass
storepass
庫(kù)中包含的內(nèi)容
server密鑰對(duì)、client數(shù)字證書
client密鑰對(duì)、server數(shù)字證書
密鑰對(duì)別名
server
client
密鑰對(duì)私鑰的保護(hù)密碼
serverpass
clientpass