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 包含三个文件: ...
随机推荐
- POJ1195(二维树状数组)
Mobile phones Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 17176 Accepted: 7920 De ...
- QT子窗口及停靠实现
Demo的效果 头文件中的变量声明 //退出动作 QAction* exit; //菜单栏菜单 QMenu* filemenu; QMenu* actiona; //在状态栏的标签控件 QLabel* ...
- [51nod1065]最小正子段和
题意:求一个序列中大于0的最小子段和. 解题关键: 先求出前缀和和,对于每个位置求某个位置到当前位置和大于1的和的最小值.然而这是复杂度是O(n^2)的.其实可以通过排序优化到O(nlogn).对前缀 ...
- solr--搭建全文搜索服务器
1.下载http://www-eu.apache.org/dist/lucene/solr/6.5.0/ 2.新建: 云模式 3.打开浏览器: 简单的中文分词,暂时是一个一个的分词:
- 跟我学: 使用 fireasy 搭建 asp.net core 项目系列之一 —— 开篇
==== 目录 ==== 跟我学: 使用 fireasy 搭建 asp.net core 项目系列之一 —— 开篇 跟我学: 使用 fireasy 搭建 asp.net core 项目系列之二 —— ...
- Pycharm 设置TextStyle
之前在脚本中选择了一个字符串, PyCharm会"高亮"所有相同的字符串, 但是我不满意这个"高亮"的颜色,因为和背景色太相似了,所以需要做一下操作,修改这个& ...
- 自动化测试工具 Test Studio入门教程
Test Studio安装 可以到下载试用版 官网 http://www.telerik.com/teststudio , 装完以后需要装silverlight 安装好了,主界面是介个样子的 Test ...
- 洛谷P1074 靶形数独(跳舞链)
传送门 坑着,等联赛之后再填(联赛挂了就不填了233) //minamoto #include<iostream> #include<cstdio> #include<c ...
- DOM事件-级别
DOM事件0~3 不同级别的DOM事件因其实现方式不同,都有自己的特性. 0级:是在dom元素上提供相关事件类型属性,js程序可以通过这些特定类型的属性注册事件处理程序. 特性:一个元素同种类型的事件 ...
- jsp学习与提高(五)——JSP 异常处理
JSP 异常处理 当编写JSP程序的时候,程序员可能会遗漏一些BUG,这些BUG可能会出现在程序的任何地方.JSP代码中通常有以下几类异常: 检查型异常:检查型异常就是一个典型的用户错误或者一个程序员 ...