一、证书生成
二、Tomcat 单向认证
Tomcat 8.5/9
- 在Tomcat安装目录的server.xml文件中定位到以下部分内容。
<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
type="RSA" />
</SSLHostConfig>
</Connector>
-->
- 删除 <!- -和- -> 注释符后,参考更多信息的参数说明二,修改certificateKeystoreFile参数值。然后新增certificateKeystorePassword参数值,最终配置内容类似如下。
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="D:\https\keytools\server.jks"
certificateKeystorePassword="huawei"
type="RSA" />
</SSLHostConfig>
</Connector>
- 在Tomcat安装目录的server.xml文件中定位到以下部分内容。
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
- 将Host Name变量设置为证书绑定的域名,下面以www.domain.com为例。
<Host name="www.domain.com" appBase="webapps"
unpackWARs="true" autoDeploy="true">
- 保存server.xml配置文件。
三、Tomcat 双向认证
打开Tomcat根目录下的/conf/server.xml,找到Connector port="8443"配置段,修改为如下:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="D:\https\single_ssl\server.p12" certificateKeystorePassword="huawei"
truststoreFile="D:\https\single_ssl\root.p12" truststorePass="huawei"
clientAuth="true" type="RSA" />
</SSLHostConfig>
</Connector>
clientAuth:设置是否双向验证,默认为false,设置为true代表双向验证 keystoreFile:服务器证书文件路径 keystorePass:服务器证书密码 truststoreFile:用来验证客户端证书的根证书,此例中就是服务器证书 truststorePass:根证书密码 测试验证访问:
# --cert指定客户端公钥证书的路径
# --key指定客户端私钥文件的路径
# -k不校验证书的合法性,因为我们用的是自签名证书,所以需要加这个参数 (控制台不校验tomcat的证书)
# 可以使用 -v 来观察具体的 SSL 握手过程
curl --cert ./client.crt --key ./client.key https://localhost:8443 -k -v
更多内容关注微信公众号 ”前后端技术精选“,或者语雀,里面有更多知识:www.yuque.com/riverzmm/uu… 《安全》