Java+Https+Tomcat双向验证实例

来源:互联网 发布:总经理助理与总监 知乎 编辑:程序博客网 时间:2024/06/18 10:51

本文演示Https双向验证实例,Web容器为Tomcat。

一.准备工作:

1.创建服务器KeyStore。

命令:keytool -genkey -alias server_jks_cennavi -keyalg RSA -keypass 123456 -storepass 123456 -keystore server.jks -validity 3650.

keytool命令如下:

-genkey         在用户主目录中创建一个默认文件".jks",还会产生一个server_jks_cennavi的别名,server_jks_cennavi中包含用户的公钥、私钥和证书
-alias             产生别名
-keystore      指定密钥库的名称(产生的各类信息将不在.jks文件中
-keyalg          指定密钥的算法   
-validity          指定创建的证书有效期多少天
-keysize        指定密钥长度
-storepass   指定密钥库的密码
-keypass      指定别名条目的密码
-dname        指定证书拥有者信息

 

在相对应的 H:\keys\server 目录下你能看到一个server.jks文件。

 

3.导出服务端证书。

定位到服务端 H:\keys\server 目录:keytool -export -trustcacerts -alias server_jks_cennavi  -file server.cer -keystore  server.jks -storepass 123456

在相对于的 H:\keys\server 目录下你能看到一个server.cer文件。

 

4.创建客户端KeyStore。

在相对应的 H:\keys\client 目录下你能看到一个client.p12文件。

5.导出客户端Cer证书。

定位到服务端 H:\keys\client 目录:keytool -export -trustcacerts -alias client_p12_cennavi  -file client.cer -keystore  client.p12 -storepass 123456 -storetype PKCS12

在相对于的 H:\keys\client目录下你能看到一个client.cer文件。

 

6.交换导入服务端和客户端证书,作为双方信任证书。

将客户端证书导入服务端keystore:keytool -import -trustcacerts -alias client_p12_cennavi -file client.cer -keystore server.jks

将服务端证书导入客户端keystore:keytool -import -trustcacerts -alias server_jks_cennavi -file server.cer -keystore client.jks

 

7.配置服务端tomcat文件下/conf/server.xml。

设置clientAuth="true"为双向验证也就是服务端同时验证客户可证书。

设置clientAuth="false"为双向验证也就是只验证服务端证书。

 

8.启动服务端程序tomcat服务,打开IE输入访问地址:https://localhost:8443/ServerDemo,本人的测试程序,程序很简单里面就一个对外开发的Servlet程序片。

你会发现IE提示:Internet Explore 无法显示该界面,这是因为我们没有将客户端client.p12证书导入到IE中出现的问题。

 

9.导入客户端client.p12证书,双击client.p12,next-->next-->输入私钥密码。

再次打开IE输入访问地址https://localhost:8443/ServerDemo,会提示一个对话框,为什么会出现这个对话框我也不是很清楚....

如图:

 

点击确定:你会看到IE浏览器已经阻止了你继续访问,原因是没有安装服务端证书。

点击安装服务端证书。

 

到这里就告一段落了,那如何用java程序来调用服务器端对外开放的Servlet程序片?

客户端代码:

运行在控制台中可以看到服务端返回的信息。

 

本人第一次写文章,写的不是很好,文章中可能有不正确的地方,请各位朋友指出来,谢谢。

大家有什么好的方法和建议请留言,谢谢。

 

原创粉丝点击