tomcat配置https 和 http强制跳转https
https是http+ssl的可进行加密传输,身份认证的网络协议,防止数据在传输过程中被窃取。因此,https将得到越来越广泛的应用,下面是如何配置tomcat服务器让http自动转到https的步骤。
1. 配置https
1.1. 生成证书
进入$JAVA_HOME/bin目录
执行命令
./keytool -genkey -alias tomcat -keyalg RSA -keystore D:\tomcat.keystore -validity 36500上述命令中,只需要修改“D:\tomcat.keystore” 这是你生成证书存放的位置。“-validity 36500”含义是证书有效期,36500表示100年。 ![http_https.png-15kB][1] 在生成证书过程中,可以只用输入密钥库口令,其余的都缺省。最后一个是输入的口令,这项较为重要,会在tomcat配置文件中使用,建议输入与keystore的密码一致,设置其它密码也可以。 另外,请最好用管理员权限运行cmd,不然生成证书时有可能出现javaFileIOexception的权限问题。
1.2 配置tomcat文件(server.xml)
打开tomcat\conf\server.xml,修改如下,
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
修改参数=>
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />
<!--
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"/>
-->
去掉注释且修改参数=>
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="D:\tomcat.keystore" keystorePass="tomcat"/>
注释:标识为淡蓝色的两个参数,分别是证书文件的位置和<tomcat>的主密码,在证书文件生成过程中做了设置
<!--
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
-->
修改参数=>
<Connector port="8009" protocol="AJP/1.3" redirectPort="443" />

如果这样修改后,尝试在浏览器输入https网址访问,在谷歌浏览器如果出现下面的这样的问题: 提示“此网站无法提供安全连接”。 ![安全连接.png-40.3kB][2] 导致出现这个错误的原因是server.xml文件中启用了两种ssl配置机制,APR和JAVA Connector,我们在这里采用的是JAVA Connector机制。 那么,恭喜你,你还需要对server.xml做如下修改: 将下面这一行配置代码注释掉:
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
如下图中箭头指的那行代码:

2. 强制https访问
接下来,我们还可以更进一步使每一个访问强制使用https访问,这样你只用输入url,就会自动启用https传输协议。
2.1 配置tomcat文件(web.xml)
tomcat\conf\web.xml中的</welcome-file-list>后面加上这样一段:
<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>
结果如下图所示:

3. 几点重要的说明
如果你将网站部署在一些网络端口资源稀缺的环境中,端口的资源控制严格。OK,那你可能会发现无法访问的情况。比如搭建的某个服务, 外网访问: 122.201.23.5:9924 端口映射为:9924->80跳转:122.201.23.5:80 假如你在配置server.xml文件时,按照我上面的步骤配置的话,在浏览器中你输入: 122.201.23.5:9924 你可能会遇到拒绝访问的问题。

原因在于单独输入上面的请求类似于: http:\\122.201.23.5:9924 而上面是一个http request,那么整个过程基本上就是: 9924->80(http)->(redirectport,https)8843 可是有时候,你可能没有8843端口的权限,因此无法访问。 因此对于只有一个端口时,那么就只能把那个端口配置成支持https的端口,不能加上重定向。但是这个时候,你必须在浏览器中输入,
https:\\122.201.23.5:9924
这是一个https request,整个过程为:
9924->80(https)
我前面讲的步骤都是有重定向端口的,假如不加上重定向的话最终配置就类似如下图这样:
<Connector port="80" protocol="HTTP/1.1" SSLEnabled="true"
connectionTimeout="20000"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="D:\tomcat.keystore" keystorePass="tomcat"/>
但是,这样对用户来说太复杂了,每次在浏览器中药用户加上https,讲真,有点反人类! 所以综上,说到底!!兄弟,再去申请一个端口吧,反正几万个端口再申一个难度不大。
4. 参考链接
- http://blog.sina.com.cn/s/blog_618592ea01012q40.html
- https://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html
- http://tomcat.apache.org/tomcat-6.0-doc/config/http.html#SSL%20Support
tomcat配置https 和 http强制跳转https的更多相关文章
- windwos下nginx 配置https并http强制跳转https
windwos下nginx 配置https并http强制跳转https 一.首先配置证书文件 申请证书文件,这里就不做详细过程了,直接看证书文件结果. 这是两个证书的关键文件 打开ngxin下con ...
- nginx 配置 HTTPS 及http 强制跳转https.
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #erro ...
- (转)Nginx的https配置记录以及http强制跳转到https的方法梳理
Nginx的https配置记录以及http强制跳转到https的方法梳理 原文:http://www.cnblogs.com/kevingrace/p/6187072.html 一.Nginx安装(略 ...
- nginx配置http强制跳转https
nginx配置http强制跳转https 网站添加了https证书后,当http方式访问网站时就会报404错误,所以需要做http到https的强制跳转设置. 一.采用nginx的rewrite方法 ...
- 解决:ngxin做http强制跳转https,接口的POST请求变成GET
域名配置了http强制跳转htpps后发现app发起post请求会出现405错误. 所以怀疑是http强制跳转https出现了问题.修改nginx配置如下即可解决: server { listen ; ...
- ngxin做http强制跳转https,接口的POST请求变成GET
http强制跳转https出现了问题.修改nginx配置如下即可解决: server { listen 80; server_name *.snsprj.cn; return 307 https:// ...
- 开启HSTS让浏览器强制跳转HTTPS访问
开启HSTS让浏览器强制跳转HTTPS访问 来源 https://www.cnblogs.com/luckcs/articles/6944535.html 在网站全站HTTPS后,如果用户手动敲入网站 ...
- Nginx的https配置记录以及http强制跳转到https的方法梳理
一.Nginx安装(略)安装的时候需要注意加上 --with-http_ssl_module,因为http_ssl_module不属于Nginx的基本模块.Nginx安装方法: 1 2 # ./con ...
- 服务器 apache配置https,http强制跳转https(搭建http与https共存)
公司linux服务器上的nginx的已经改成https了,现在还剩下一个windows云服务器没配置. 环境 windows wampserver2.5 64位 1.腾讯云申请的ssl 包含三个文件: ...
随机推荐
- JS---计算两个日期之间相差多少天
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 如何用CSS实现矩形按钮右边缘的中间有个往里凹的小半圆
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...
- 2. nmap扫描神器总结
-----------------nmap(选项)(参数)------------------O:激活操作探测: -P0:值进行扫描,不ping主机: -PT:是同TCP的ping: -sV:探测服务 ...
- UVaLive 4094 WonderTeam (贪心)
题意:有n支队伍,每两支队伍打两场比赛(主客场各一次),胜得3分,平得1分,输不得分,比赛结束之后会评选出一个梦之队, 梦之队满足以下条件:进球总数最多,胜利场数最多,丢求总数最少,三个都不能并列,求 ...
- 使用LinearLayout实现ListView,解决ListView和ScrollView滚动冲突
在项目中,我们常常会遇到一个ScrollView里面会嵌套ListView的情况,但往往你会发现,ListView和ScrollView的滚动时间会有冲突问题,造成ListView不能完全显示.虽然网 ...
- 分类---Logistic Regression
一 概述 Logistic Regression的三个步骤 现在对为什么不使用均方误差进行分析(步骤二的) 由上图可以看出,当距离目标很远时,均方误差移动速率也很慢,不容易得到好的结果. Discri ...
- js转义字符
\" \/ \" 例: span = "<span onclick=\"xadmin.open('编辑','\/junyi\/member\/up ...
- cf813C(bfs)
题目链接:http://codeforces.com/problemset/problem/813/C 题意:给出一颗树,开始时两个人 Alice 和 Bob 分别站在 1(树根)和 x 处.此后每一 ...
- 洛谷P3455 [POI2007]ZAP-Queries(莫比乌斯反演)
传送门 设$$f(k)=\sum_{i=1}^{a}\sum_{j=1}^{b}[gcd(i,j)=k]$$ $$g(n)=\sum_{n|k}f(k)=\lfloor\frac{a}{n}\rflo ...
- IT兄弟连 JavaWeb教程 监听器2
4 监听HttpSession域对象的创建和销毁 HttpSessionListener接口用于监听HttpSession对象的创建和销毁. 创建一个Session时,激发sessionCreate ...