Tomcat配置SSL双向认证(3)

<security-constraint> <web-resource-collection> <web-resource-name>SSL</web-resource-name> <url-pattern>/SSLServlet</url-pattern> </web-resource-collection> <user-data-constraint> <description>SSL required</description> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>

说明:

如果不加入这个配置,那么所有访问的地址都必须要使用SSL才能访问,有时我们可能只需要通过某个或者某些SSL地址获取客户端证书来认证用户身份,认证成功后不需要使用SSL来进行访问。(可以配置多个security-constraint)

url-pattern:指定需要SSL才能进行访问的地址

transport-guarantee:合法值为NONE、 INTEGRAL或CONFIDENTIAL,transport-guarantee为NONE值将对所用的通讯协议不加限制。INTEGRAL值表示数据必须以一种防止截取它的人阅读它的方式传送。虽然原理上(并且在未来的HTTP版本中),在 INTEGRAL和CONFIDENTIAL之间可能会有差别,但在当前实践中,他们都只是简单地要求用SSL

创建SSLServlet获取客户端证书

五、测试

用浏览器访问:8080/SSL/SSLServlet,细心的读者可能发现链接已经跳转到了https://127.0.0.1:8443/SSL/SSLServlet ,这是由于这个地址被设置为需要SSL才能访问,所以跳转到了这个地址。访问时页面提示如下:

Tomcat配置SSL双向认证

由于我们这里是双向认证,所以也需要客户端的证书,我们接下来导入客户端证书:

双击client.p12

Tomcat配置SSL双向认证

点击下一步

  

Tomcat配置SSL双向认证

一直点击下一步直到完成证书安装(按照提示进行操作即可)

 查看安装的客户端证书,由于我使用的Google Chrome浏览器(其他浏览器可能不同),设置 -> 高级设置 -> 管理证书

  

Tomcat配置SSL双向认证

Tomcat配置SSL双向认证

2. 重新访问上面的地址::8080/SSL/SSLServlet

   

Tomcat配置SSL双向认证

浏览器提示选择客户端证书进行认证,我们点击【确定】,打开了一个警告页面,提示我们服务端证书不受信任

Tomcat配置SSL双向认证

而且地址栏的图标有个小红叉:

   

Tomcat配置SSL双向认证

当然我们直接点击是能打开的

Tomcat配置SSL双向认证

  为了不出现这样的警告信息,我们可以导入服务器端证书到客户端

a. 导入服务器端证书到客户端

 双击server.cer

  

Tomcat配置SSL双向认证

点击安装证书,然后选择证书的存储位置“受信任的根证书颁发机构”,一直点击下一步直到完成

 

Tomcat配置SSL双向认证

查看我们安装的服务器端证书

  

Tomcat配置SSL双向认证

b. 关闭浏览器,我们再访问

六、附录

Keytool命令常用参数说明:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/6af336cb05cd865288c47546bfd3ebba.html