Tomcat应用https配置


服务器生成证书

./keytool -genkey -v -alias xxxx-keyalg RSA -keystore /home/soft/xxxx.keystore -validity 36500

客户端生成证书

./keytool -genkey -v -alias xxxx -keyalg RSA -storetype PKCS12 -keystore /home/soft/xxxx.p12 -validity 36500

生成客户端cer

./keytool -export -alias xxxx -keystore /home/soft/xxxx.p12 -storetype PKCS12 -storepass xxxx2015 -rfc -file /home/soft/xxxx.cer

服务器加入客户端证书

./keytool -import -v -file /home/soft/xxxx.cer -keystore /home/soft/xxxx.keystore

生成服务器cer

./keytool -keystore /home/soft/xxxx.keystore -export -alias xxxx -file D:\home\xxxxserver.cer keystoreFile="/home/soft/xxxx.keystore" keystorePass="xxxx2015" truststoreFile="/home/soft/xxxx.keystore" truststorePass="xxxx2015"

查看证书

./keytool -list -keystore /home/soft/xxxx.keystore

让客户端信任服务器证书
由于是双向SSL认证,客户端也要验证服务器证书,因此,必须把服务器证书添加到浏览的“受信任的根证书颁发机构”。由于不能直接将keystore格式的证书库导入,必须先把服务器证书导出为一个单独的CER文件,使用如下命令:
keytool -keystore D:\home\tomcat.keystore -export -alias tomcat -file D:\home\tomcat.cer (tomcat为你设置服务器端的证书名)。
通过以上命令,服务器证书就被我们导出到“D:\home\tomcat.cer”文件了。双击tomcat.cer文件,按照提示安装证书,将证书填入到“受信任的根证书颁发机构”。
配置Tomcat服务器
打开Tomcat根目录下的/conf/server.xml,找到Connector port="8443"配置段,修改为如下:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true" maxThreads="150" scheme="https"
secure="true" clientAuth="true" sslProtocol="TLS"
keystoreFile="D:\\home\\tomcat.keystore" keystorePass="123456"
truststoreFile="D:\\home\\tomcat.keystore" truststorePass="123456" />
(tomcat要与生成的服务端证书名一致)
属性说明:
clientAuth:设置是否双向验证,默认为false,设置为true代表双向验证
keystoreFile:服务器证书文件路径
keystorePass:服务器证书密码
truststoreFile:用来验证客户端证书的根证书,此例中就是服务器证书
truststorePass:根证书密码

测试
在浏览器中输入:https://localhost:8443/,会弹出选择客户端证书界面,点击“确定”,会进入tomcat主页,地址栏后会有“锁”图标,表示本次会话已经通过HTTPS双向验证,接下来的会话过程中所传输的信息都已经过SSL信息加密。