Chinaunix首页 | 论坛 | 博客
  • 博客访问: 314007
  • 博文数量: 50
  • 博客积分: 3095
  • 博客等级: 中校
  • 技术积分: 510
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-22 10:43
文章分类

全部博文(50)

文章存档

2014年(1)

2012年(1)

2011年(2)

2010年(3)

2009年(6)

2008年(20)

2007年(15)

2006年(2)

我的朋友

分类: Java

2008-03-24 16:52:11

签名和加密需要使用到数字证书和密钥对,可以使用JDK提供的KeyTool工具创建密钥对和数字证书。我们分别为服务端和客户端创建RSA密钥对,并生成各自的数字证书(包含公钥和数字签名)。服务端和客户端拥有各自的密钥库JKS文件,服务端的密钥库保存服务端的密钥对和客户端的数字证书,而客户端的密钥库保存客户端的密钥对和服务端的数字证书。

下面,我们来看看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

  • _HOME>/examples/ws-security/keys/generateServerKey.bat文件

①下面两行命名分别调用generateKeyPair.bat批处理文件为服务端和客户端生成密钥对

call generateKeyPair.bat server serverpass serverStore.jks storepass serverKey.rsa

call generateKeyPair.bat clientclientpassclientStore.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

  • serverStore.jksclientStore.jks拷贝到<工程目录>/src/META-INF/xfire的目录下,以便后面的实例代码使用。
阅读(2617) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~