tomcat配置https单向认证

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tomcat配置https单向认证相关的知识,希望对你有一定的参考价值。

1. https单向认证原理

  “单向认证”,即“浏览器”验证“服务器”的证书是否合法,从而判断正在访问的网站是否可信。这也是当前网络上最常用的认证方式,GitHub、Google、Twitter、Facebook等均采用此种方式。

  “单向认证”的两个通信实体如下

技术分享

  他们之间的通信过程如下

技术分享

下面给出简要的文字说明

  1. 客户端访问服务器
  2. 服务器响应客户端,发送服务器证书给客户端
  3. 客户端查询“受信任根证书颁发机构”,验证服务器证书
  4. 客户端验证完服务器证书,生成“密钥对”及会话密钥,与服务器协商会话密钥
  5. 会话密钥协商完成,开始安全加密通信

2. 准备证书

  证书需要准备两个

  1. 服务器证书(tomcat为jks格式)
  2. CA根证书

  服务器证书用于浏览器验证服务器身份,CA根证书只是为了让浏览器信任服务器证书。生成服务器证书的方式很多,keytool、openssl、ejbca都可以,具体过程参考我的其他帖子,这里不赘述。我生成的服务器证书名为“tomcat-win.jks”,CA根证书名称是“ruxueCA.crt”。

3. 配置tomcat

  编辑tomcat/conf目录下的“server.xml”,找到如下内容,如被注释,请去掉注释

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="D:\\Download\\tomcat-win.jks" keystorePass="123456" />

  配置好证书路径和访问密码,启动tomcat。

3. 浏览器访问

  浏览器输入https://localhost:8443,出现如下错误,点击“继续浏览此网站(不推荐)”

技术分享

  可以正常访问tomcat,但出现证书错误提示

技术分享

  点击“证书错误”,出现如下信息

技术分享

  这是因为这个证书是CA颁发给“win.ruxue.online”网站的,而我们访问的域名是“localhost”。修改C:\\Windows\\System32\\drivers\\etc目录下的hosts文件,添加如下一行信息。

127.0.0.1 win.ruxue.online

  在浏览器中输入https://win.ruxue.online:8443,依然出现“此网站的安全证书出现问题”的错误提示,同上,点击“证书错误”查看,发现这次的错误不同了。

技术分享

  这是因为浏览器“受信任根证书颁发机构”中并没有颁发“tomcat-win.jks”证书的CA机构信息,浏览器因此认为这个证书有问题,此时我们需要在浏览器的“受信任根证书颁发机构”导入CA根证书“ruxueCA.crt”。

技术分享

  导入成功之后再访问https://win.ruxue.online:8443

技术分享

  没有任何问题了,点击那把绿色的锁,可以看到这个网站的安全证书信息。

技术分享

以上是关于tomcat配置https单向认证的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat容器https配置之单向认证

TOMCAT配置HTTPS双向认证,为啥始终无法访问

实现tomcat的https单向认证及双向认证

Tomcat容器https配置之双向认证

Tomcat配置HTTPS访问

https 单向认证和双向认证配置