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 包含三个文件: ...
随机推荐
- 一行代码解决IE6/7/8/9/10兼容问题
百度源代码如下 <!Doctype html><html xmlns=http://www.w3.org/1999/xhtml xmlns:bd=http://www.baidu.c ...
- hadoop之一:概念和整体架构
什么是hadoop? Apache Hadoop是一款支持数据密集型分布式应用并以Apache 2.0许可协议发布的开源软件框架.它支持在商品硬件构建的大型集群上运行的应用程序.Hadoop是根据Go ...
- S5pv210 HDMI 接口在 Linux 3.0.8 驱动框架解析
作者:liukun321 咕唧咕唧 日期:2014.1.18 转载请标明作者.出处:http://blog.csdn.net/liukun321/article/details/18452663 本文 ...
- ReportEvent的正确使用方式
向操作系统的事件管理器报告重大信息是一种非常有用的方式,特别是对于没有界面的后台服务而言.如果你对Windows编程有一定了解,应该很快就能想到使用ReportEvent这个API,然后快速写出下面的 ...
- javascript 函数属性prototype(转)
在JavaScript中并没有类的概念,但javascript中的确可以实现重载,多态,继承.这些实现其实方法都可以用JavaScript中的引用和变量作用域结合prototype来解释. 1.pro ...
- 萌新笔记之Nim取石子游戏
以下笔记摘自计算机丛书组合数学,机械工业出版社. Nim取石子游戏 Nim(来自德语Nimm!,意为拿取)取石子游戏. 前言: 哇咔咔,让我们来追寻娱乐数学的组合数学起源! 游戏内容: 有两个玩家面对 ...
- 机器学习中的L1、L2正则化
目录 1. 什么是正则化?正则化有什么作用? 1.1 什么是正则化? 1.2 正则化有什么作用? 2. L1,L2正则化? 2.1 L1.L2范数 2.2 监督学习中的L1.L2正则化 3. L1.L ...
- 浅淡Java多线程
工作中一直忙着实现业务逻辑,多线程接触得不多.对多线程的认知,一直停留在Thread和Runnable上.最近心血来潮,找了几本多线程的书,不看不知道,一看吓一跳.原来我对多线程的理解是多么的肤浅.记 ...
- Ajax遇到的那些坑
提前说明:这里我用的是Windows系统,所以解决问题的方法也是仅限Windows系统,浏览器使用Chrome 第一个坑:Access to XMLHttpRequest at 'file:///C: ...
- SpringBoot2.0 基础案例(03):配置系统全局异常映射处理
一.异常分类 这里的异常分类从系统处理异常的角度看,主要分类两类:业务异常和系统异常. 1.业务异常 业务异常主要是一些可预见性异常,处理业务异常,用来提示用户的操作,提高系统的可操作性. 常见的业务 ...