配置tomcat实现http转向https双向认证
任务需求:原有的请求为非安全的http协议,通过tomcat相关配置实现http跳转为更为安全的https进行访问。
工具:tomcat,控制台
步骤:
1.服务器生成证书
通过控制台跳转到tomcat安装目录下,运行以下命令:
keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:\key\tomcat.keystore -validity 36500
alias:证书别名;
Keystore:证书存储位置;
Tomcat.keystore:生成的文件名字;
Validity:证书有限期。
回车运行后需要填写以下问题:
A、输入密钥库口令:自己设置;
B、“您的名字语姓氏是什么?”:tomcat部署主机的域名,可以设置为127.0.0.1或其他。
后续几个问题可以不填,直接回车到系统询问填写是否正确?输入y,生成tomcat.keystore文件。
2.客户端生成证书
生成格式为PKCS12的浏览器证书,在控制台输入以下命令:
keytool -genkey-v –alias mykey -keyalg RSA -storetype PKCS12 -keystore D:\key\mykey.p12
可以在相应位置找到mykey.p12文件,直接双击运行此文件,按照提示安装证书,将证书填入到“受信任的根证书颁发机构”。
3.双向认证
由于双向认证是通过SSL,服务器语客户端必须互相信任证书,首先将客户端证书导出为CER文件,在控制台输入以下命令:
keytool-export -alias mykey -keystore D:\key\mykey.p12 -storetype PKCS12 -storepass password -rfc -file D:\key\mykey.cer
password为设置的密码,回车即可在相应位置可以生成mykey.cer文件,将该文件导入到服务器的证书库,在控制台输入以下命令:
keytool -import -v -file D:\home\mykey.cer -keystore D:\home\tomcat.keystore
keytool-export -alias client(客户端证书别名) -keystore D:\key\client.p12 -storetype PKCS12 -storepass client(你的客户端keystore密码) -rfc-file D:\key\clientforserver.ce
再进行客户端对服务器证书的验证,也将服务器证书导出为CER文件,在控制台输入以下命令:
keytool -keystore D:\home\tomcat.keystore -export -alias tomcat -file D:\home\tomcat.cer
在相应位置也可以生成tomcat.cer文件。安装两个生成的cer文件,按照提示安装证书文件,将证书填入到“受信任的根证书颁发机构”。
4.配置tomcat
修改server.xml文件,暂时不需要修改web.xml文件(经测试)
打开tomcat根目录下的/conf/server.xml文件,添加如下字段:
<Connector keystoreFile="D:/key/tomcat.keystore(生成的keystore文件)"
SSLEnabled="true" clientAuth="true"
keystorePass="密码" maxThreads="150" port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
scheme="https" secure="true" sslProtocol="TLS"
truststoreFile="D:/key/tomcat.keystore(生成的keystore文件)" truststorePass="设置的密码"/>
5.测试
在tomcat7和tomcat8中测试,需要设置myeclipse(2015)中的server文件,防止每次部署项目自动恢复server.xml文件,直接修改下图中的文件即可。
测试结果如下图:
在tomcat6中,暂时没有发现myeclipse(8)自动恢复文件的问题。
参考:http://blog.csdn.net/zhangyong125/article/details/49944683#comments