keytool的使用

概念

keytool 是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。
在JDK1.4以后的版本中都包含了这一工具,它的位置为%JAVA_HOME%\bin\keytool.exe

使用教程(java环境变量已经配好的情况下进行的)

1.查看帮助 cmd 命令行中输入keytool
2.创建证书

1
keytool -genkeypair -alias "iwooto.com" -keystore "iwooto.keystore"

3.查看秘钥库里面的证书

1
keytool -list -keystore iwooto.keystore

4.导出证书到文件

1
keytool -export -alias iwooto.com -file iwooto.crt -keystore iwooto.keystore

5.导入证书

1
2
3
4
5
6
#导入iwooto.crt证书到test秘钥库
keytool -import -keystore test -file iwooto.crt
#导入iwooto.crt证书到JDK秘钥库(如果报错先删除jdk下的cacerts文件)
keytool -import -keystore D:\Java\jdk1.7.0_71\jre\lib\security\cacerts -file iwooto.crt
#或
keytool -import -keystore D:\Java\jdk1.7.0_71\jre\lib\security\cacerts -file iwooto.crt -alias iwooto.com

6.查看证书信息

1
keytool -printcert -file iwooto.crt

7.修改证书条目口令

1
keytool -keypasswd -alias iwooto.com -keystore iwooto.keystore

8.删除秘钥库的条目

1
keytool -delete -keystore iwooto.keystore -alias iwooto.com

ssl单向证书

1、使用keytool为Tomcat生成证书

keytool -validity 3650 -genkey -v -alias tomcat -keyalg RSA -keystore D:/tomcat.keystore -dname “CN=server.iwooto.com,OU=iwooto,O=iwooto,L=shanghai,ST=shanghai,C=CN” -storepass 123456 -keypass 123456

2、生成服务器cer文件,导入客户端的浏览器内详见5(解决不信任问题)

keytool -export -alias tomcat -keystore D:\tomcat.keystore -storepass 123456 -rfc -file D:\tomcat.cer

3、配置tomcat目录下\conf\server.xm 打开文件,找到对应配置,取消注释,重新配置

1
2
3
4
<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"  
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="D:/tomcat.keystore" keystorePass="123456" />

4、配置项目下的web.xml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
<login-config>
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
<web-resource-collection >
<web-resource-name >SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>

5、打开浏览器 - 工具 - internet选项-内容- 证书-受信任的根证书颁发机构-导入D:/tomcat.cer

ssl双向证书

1、使用keytool为tomcat生成证书

1
keytool -validity 3650 -genkey -v -alias tomcat -keyalg RSA -keystore D:/tomcat.keystore -dname "CN=server.iwooto.com,OU=iwooto,O=iwooto,L=shanghai,ST=shanghai,C=CN" -storepass 123456 -keypass 123456

2、生成服务器cer文件,导入客户端的浏览器内详见5(解决不信任问题)

1
keytool -export -alias tomcat -keystore D:\tomcat.keystore -storepass 123456 -rfc -file D:\tomcat.cer

3、生成客户端证书库

keytool -validity 3650 -genkeypair -v -alias client -keyalg RSA -storetype PKCS12 -keystore D:/client.p12 -dname “CN=iwooto,OU=iwooto,O=iwooto,L=shanghai,ST=shanghai,C=CN” -storepass 123456 -keypass 123456

4、从客户端证书库中导出客户端证书

keytool -export -v -alias client -keystore D:\client.p12 -storetype PKCS12 -storepass 123456 -rfc -file D:\client.cer

5、生成客户端信任证书库(由服务端证书生成的证书库)

keytool -import -v -alias tomcat -file D:\tomcat.cer -keystore D:\client.truststore -storepass 123456

6、将客户端证书导入到服务器证书库(使得服务器信任客户端证书)

keytool -import -v -alias client -file D:\client.cer -keystore D:\tomcat.keystore -storepass 123456

7、查看证书库中的全部证书

keytool -list -keystore D:\tomcat.keystore -storepass 123456

8、配置tomcat目录下\conf\server.xm 打开文件,找到对应配置,取消注释,重新配置

1
2
3
4
5
6
7
<Connector
protocol="org.apache.coyote.http11.Http11NioProtocol"
port="443" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="D:/tomcat.keystore" keystorePass="123456"
truststoreFile="D:/tomcat.keystore" truststorePass="123456"
clientAuth="true" sslProtocol="TLS"/>

9、配置项目下的web.xml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
<login-config> 
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
<web-resource-collection >
<web-resource-name >SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>

10、导入服务端给客户端颁发的证书client.p12

双击“client.p12”一直默认下一步即可

11、服务端生成的信任证书导入到浏览器的根证书中

打开浏览器 - 工具 - internet选项-内容- 证书-受信任的根证书颁发机构-导入D:/tomcat.cer

参考链接:http://blog.csdn.net/a351945755/article/details/22727259