参考教程: Apache Tomcat 7 SSL/TLS Configuration HOW-TO
html
(1):客户端(浏览器)发送https请求到服务器web
(2):服务器有私钥和公约算法
(3):服务器返回公钥给客户端shell
(4):客户端经过系统根证书机构验证公钥是否有效,验证公钥、时间、机构等信息apache
(5):客户端验证成功后生成必定长度的随机数(如2048位),而后使用公钥经过证书支持的算法与随机数加密而后发送给服务器windows
(6):服务器接受到加密数据口经过私钥解密而后取得随机数浏览器
(7):而后使用随机数经过证书支持的算法(如:RSA)把内容加密而后响应给客户端tomcat
(8):客户端使用随机数解密内容。服务器
整个https数据交互中涉及到公钥,私钥app
keytool -genkeypair -alias testdomain -keyalg RSA -keysize 2048 -validity 3650 -keystore e:\\testdomain.keystore
其中名字和姓氏是本身的域名,其余的任意。
生成了之后就在e:\\盘能看到testdomain.keystore 文件了
打开%TOMCAT_HOME%/conf/server.xml
<Connector protocol="org.apache.coyote.http11.Http11NioProtocol" port="443" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" keystoreFile="e:\\testdomain.keystore" keystorePass="123456" clientAuth="false" sslProtocol="TLS"/>
keystoreFile:是密钥对的路径,keystorePass:是配置密钥对时候的密钥口令。
而后保存启动tomcat。在浏览器中输入:https://test.domain.com 由于我在c:/windows/system32/drivers/etc/hosts中配置了 :127.0.0.1 test.domain.com 因此我访问它也就至关于访问本地服务器了。
打开浏览器的结果页面: (若是打不开该页面,或者打开后不正常 用netstat -ano |findstr "443" 这条命令查询443端口是否被占用,或者把端口改为其余的或默认8443.若是端口是非443则访问的时候须要单独输入端口号)
由于还未生成证书,因此浏览器(操做系统)不信任当前https连接则出现当前页面。
keytool -import -alias tomcat -keystore <your_keystore_filename> -file <your_certificate_filename>
keytool -exportcert -alias testdomain -keystore e:\\testdomain.keystore -file e:\\testdomain.cer
-exportcert命令详解
导出证书后,就能在e盘看到testdomain.cer文件了。
双击打开证书:
点击安装证书
选择当前或本地计算机,而后下一步
选择第二个:将全部的证书都放入下列存储,而后点击浏览。
而后下一步与完成
这儿选择是
如今就能看到https已经受信任了。
在%TOMCAT_HOME%/conf/web.xml webapp标签里面 最后添加如下代码
<login-config> <!-- Authorization setting for SSL --> <auth-method>CLIENT-CERT</auth-method> <realm-name>Client Cert Users-only Area</realm-name> </login-config> <security-constraint> <!-- Authorization setting for SSL --> <web-resource-collection> <web-resource-name >SSL</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>