keyTool的用法
程序员文章站
2022-04-01 22:06:35
...
http://blog.chinaunix.net/u/3641/showart_506402.html
Xfire实现WSS之创建密钥对和数字证书
签名和加密需要使用到数字证书和密钥对,可以使用JDK提供的KeyTool工具创建密钥对和数字证书。我们分别为服务端和客户端创建RSA密钥对,并生成各自的数字证书(包含公钥和数字签名)。服务端和客户端拥有各自的密钥库JKS文件,服务端的密钥库保存服务端的密钥对和客户端的数字证书,而客户端的密钥库保存客户端的密钥对和服务端的数字证书。
下面,我们来看看xfire提供的例子:
<XFIRE_HOME>/examples/ws-security/keys/generateKeyPair.bat批处理文件:
rem @echo off
#接受参数
echo alias %1
echo keypass %2
echo keystoreName %3
echo KeyStorePass %4
echo keyName %5
创建RSA密钥对
keytool -genkey -alias %1 -keypass %2 -keystore %3 -storepass %4 -dname "cn=%1" -keyalg RSA
使用私钥进行自签名
keytool -selfcert -alias %1 -keystore %3 -storepass %4 -keypass %2
导出数字证书
keytool -export -alias %1 -file %5 -keystore %3 -storepass %4
<XFIRE_HOME>/examples/ws-security/keys/generateServerKey.bat文件:
下面两行命名分别调用generateKeyPair.bat批处理文件为服务端和客户端生成密钥对
call generateKeyPair.bat server serverpass serverStore.jks storepass serverKey.rsa
call generateKeyPair.bat client clientpass clientStore.jks storepass clientKey.rsa
将服务端的数字证书导入客户端的密钥库
keytool -import -alias server -file serverKey.rsa -keystore clientStore.jks -storepass storepass -noprompt
将客户端的数字证书导入服务端的密钥库
keytool -import -alias client -file clientKey.rsa -keystore serverStore.jks -storepass storepass -noprompt
运行该批处理文件后,将分别为服务端和客户端生成一个Java密钥库文件,它们分别拥有一个自己的密钥对和对方的数字证书。我们通过表1对两者密钥库文件的内容进行说明:
表1密钥库说明
服务端Java密钥库
客户端Java密钥库
对应密钥库文件
serverStore.jks
clientStore.jks
密钥库密码
storepass
storepass
库中包含的内容
server密钥对、client数字证书
client密钥对、server数字证书
密钥对别名
server
client
密钥对私钥的保护密码
serverpass
clientpass
Xfire实现WSS之创建密钥对和数字证书
签名和加密需要使用到数字证书和密钥对,可以使用JDK提供的KeyTool工具创建密钥对和数字证书。我们分别为服务端和客户端创建RSA密钥对,并生成各自的数字证书(包含公钥和数字签名)。服务端和客户端拥有各自的密钥库JKS文件,服务端的密钥库保存服务端的密钥对和客户端的数字证书,而客户端的密钥库保存客户端的密钥对和服务端的数字证书。
#keystore的生成: keytool -genkey -alias password654321 -keypass password654321 -keyalg RSA -keysize 1024 -validity 3650 -keystore d:/my.jks -storepass passowrd123456 -dname "CN=my, OU=my, O=my, L=dl, ST=ln, C=cn" #keystore信息的查看: keytool -list -v -keystore d:/my.jks -storepass passowrd123456 #查看证书 keytool -list -rfc -keystore d:/my.jks -storepass passowrd123456 #证书的导出: keytool -export -alias password654321 -keystore d:/my.jks -file d:/my.crt -storepass passowrd123456 #查看导出的证书信息 keytool -printcert -file d:/my.crt #提取私钥,提示输入的key:keypass=password654321 keytool -v -importkeystore -srckeystore d:/my.jks -srcstoretype jks -srcstorepass passowrd123456 -destkeystore myserver.pfx -deststoretype pkcs12 -deststorepass passowrd123456 -destkeypass passowrd123456 #把文件上传到linux服务器,然后执行如下命令便可以将servers.pfx的私钥导出,中间要输入password=passowrd123456 openssl pkcs12 -in myserver.pfx -nocerts -nodes -out myserver.key #通过vim myserver.key可以查看到私钥的内容 vim myserver.key
下面,我们来看看xfire提供的例子:
<XFIRE_HOME>/examples/ws-security/keys/generateKeyPair.bat批处理文件:
rem @echo off
#接受参数
echo alias %1
echo keypass %2
echo keystoreName %3
echo KeyStorePass %4
echo keyName %5
创建RSA密钥对
keytool -genkey -alias %1 -keypass %2 -keystore %3 -storepass %4 -dname "cn=%1" -keyalg RSA
使用私钥进行自签名
keytool -selfcert -alias %1 -keystore %3 -storepass %4 -keypass %2
导出数字证书
keytool -export -alias %1 -file %5 -keystore %3 -storepass %4
<XFIRE_HOME>/examples/ws-security/keys/generateServerKey.bat文件:
下面两行命名分别调用generateKeyPair.bat批处理文件为服务端和客户端生成密钥对
call generateKeyPair.bat server serverpass serverStore.jks storepass serverKey.rsa
call generateKeyPair.bat client clientpass clientStore.jks storepass clientKey.rsa
将服务端的数字证书导入客户端的密钥库
keytool -import -alias server -file serverKey.rsa -keystore clientStore.jks -storepass storepass -noprompt
将客户端的数字证书导入服务端的密钥库
keytool -import -alias client -file clientKey.rsa -keystore serverStore.jks -storepass storepass -noprompt
运行该批处理文件后,将分别为服务端和客户端生成一个Java密钥库文件,它们分别拥有一个自己的密钥对和对方的数字证书。我们通过表1对两者密钥库文件的内容进行说明:
表1密钥库说明
服务端Java密钥库
客户端Java密钥库
对应密钥库文件
serverStore.jks
clientStore.jks
密钥库密码
storepass
storepass
库中包含的内容
server密钥对、client数字证书
client密钥对、server数字证书
密钥对别名
server
client
密钥对私钥的保护密码
serverpass
clientpass