keytool用法
2014-07-02 09:26
85 查看
JDK里面自带了一个密钥生成工具keytool,可以通过它生成SSL 通信需要的密钥对,或者生成自签名的证书。所有密钥对或者签名证书都是存放在“keystore”密钥仓库中,由它来管理。
下面结合具体例子说明:(java WEB容器:tomcat 5.0)
1,生成服务端密钥仓库,
keytool -genkey -alias svrkey -keyalg RSA -keystore d:/svr.jks -validity 365
"alias"是生成的密钥别名,密钥的导入导出都需要由别名来定位。
"keystore"生成的密钥仓库
"validity"生成密钥仓库的有效期(天)
随后会要求输入密钥仓库入口密码,比如: lostsky_11
输完密码后,接着会要求一系列的输入,无非是单位,所在地区之类的信息,
但是第一项很重要!为输入服务端域名或IP,如: 192.168.1.3或www.591pic.com
必须与服务器域名或IP相同,否则SSL 连接无法建立(这也是SSL 通信验证的一部分)
2,在tomcat_home/conf/server.xml中配置:
找到ssl 通信配置那一段,加入:
keystoreFile="d:/svr.jks" keystorePass="lostsky_11"
服务器启动时会从中寻找用于建立ssl 连接的密钥
3,导出服务端证书
keytool -export -alias svrkey -file d:/svr.cer -keystore d:/svr.jks
"alias"为想导出的密钥的别名,"file"为导出的证书,"keystore"为存储着导出密钥的仓库
4,生成客户端密钥仓库
keytool -genkey -alias clientkey -keyalg RSA -keystore d:/client.jks
会要求输入仓库密码:如:midsky
5,将服务端证书导入到客户端密钥仓库
keytool -import -file d:/svr.cer -keystore d:/client.jks
会要求输入客户端密钥仓库的密码:如上是:midsky
6,在客户端,每次访问服务端之前,加入
"System.setProperty("javax.net.ssl .trustStore","d://client.jks");
System.setProperty("javax.net.ssl .trustStorePassword","midsky");
"
就把服务端证书添加到了客户端的信任域中,能够完成ssl 通信。
注:ssl 通信主要验证三个方面:
a, 证书是否可信(第6步)
b, 证书是否过期(第1步:validity)
c, 证书地址是否和当前访问地址符合(第1步)
以上是客户端对于服务端的验证,这也是SSL 默认的实现方式。在这种方式下,每次通信时,发起请求方(如PC中的BROWSER)都会验证响应方(如某个WEB服务端)的证书是否在己方信任域中,对 方的证书是否过期,对方的域名或IP,是否与信任域中证书记载的一致;不符合其中任何一项,通信都会被拒绝。但反过来,响应方是不对请求方做任何验证的。 所以有些需要双向验证的服务(比如某些服务只能对特定的拥有证书的用户开放),就需要添加客户端证书,由服务端来验证了,原理和实现与默认模式类似。
下面结合具体例子说明:(java WEB容器:tomcat 5.0)
1,生成服务端密钥仓库,
keytool -genkey -alias svrkey -keyalg RSA -keystore d:/svr.jks -validity 365
"alias"是生成的密钥别名,密钥的导入导出都需要由别名来定位。
"keystore"生成的密钥仓库
"validity"生成密钥仓库的有效期(天)
随后会要求输入密钥仓库入口密码,比如: lostsky_11
输完密码后,接着会要求一系列的输入,无非是单位,所在地区之类的信息,
但是第一项很重要!为输入服务端域名或IP,如: 192.168.1.3或www.591pic.com
必须与服务器域名或IP相同,否则SSL 连接无法建立(这也是SSL 通信验证的一部分)
2,在tomcat_home/conf/server.xml中配置:
找到ssl 通信配置那一段,加入:
keystoreFile="d:/svr.jks" keystorePass="lostsky_11"
服务器启动时会从中寻找用于建立ssl 连接的密钥
3,导出服务端证书
keytool -export -alias svrkey -file d:/svr.cer -keystore d:/svr.jks
"alias"为想导出的密钥的别名,"file"为导出的证书,"keystore"为存储着导出密钥的仓库
4,生成客户端密钥仓库
keytool -genkey -alias clientkey -keyalg RSA -keystore d:/client.jks
会要求输入仓库密码:如:midsky
5,将服务端证书导入到客户端密钥仓库
keytool -import -file d:/svr.cer -keystore d:/client.jks
会要求输入客户端密钥仓库的密码:如上是:midsky
6,在客户端,每次访问服务端之前,加入
"System.setProperty("javax.net.ssl .trustStore","d://client.jks");
System.setProperty("javax.net.ssl .trustStorePassword","midsky");
"
就把服务端证书添加到了客户端的信任域中,能够完成ssl 通信。
注:ssl 通信主要验证三个方面:
a, 证书是否可信(第6步)
b, 证书是否过期(第1步:validity)
c, 证书地址是否和当前访问地址符合(第1步)
以上是客户端对于服务端的验证,这也是SSL 默认的实现方式。在这种方式下,每次通信时,发起请求方(如PC中的BROWSER)都会验证响应方(如某个WEB服务端)的证书是否在己方信任域中,对 方的证书是否过期,对方的域名或IP,是否与信任域中证书记载的一致;不符合其中任何一项,通信都会被拒绝。但反过来,响应方是不对请求方做任何验证的。 所以有些需要双向验证的服务(比如某些服务只能对特定的拥有证书的用户开放),就需要添加客户端证书,由服务端来验证了,原理和实现与默认模式类似。
相关文章推荐
- keytool简明用法
- keytool用法总结
- Java制作证书的工具keytool用法总结
- keytool的用法
- keytool 用法
- Java制作证书的工具keytool用法总结
- Java制作证书的工具keytool用法总结
- java keytool 用法
- keytool 用法总结
- KeyTool用法详解,CA证书
- Java制作证书的工具keytool用法总结
- java基础学习总结——Java制作证书的工具keytool用法总结
- keytool用法及说明
- Java制作证书的工具keytool用法总结
- cmd里查看jks签名信息,更改别名,删除别名,查看apk签名信息,keytool高级用法
- Java制作证书的工具keytool用法总结
- JDK中keytool工具的用法
- Java制作证书的工具keytool用法总结
- https生成证书——keytool 用法总结
- KeyTool用法