在linux的tomcat中配置https及自动跳转
公司业务发展需要添加https,苹果在2017年1月1日以后认为https是安全的所以很多网站都进行了升级。苹果在iOS 9中引入的一项隐私保护功能,屏蔽明文http资源加载,连接必须经过更安全的https。苹果目前允许开发者暂时关闭ATS,可以继续使用HTTP连接,但到年底所有官方商店的应用都必须强制性使用ATS。,如果不升级苹果端是不支持的。
说一下证书,由于http的协议和https的协议不一样,所以用的端口也不一样http是80而https是443,而且https协议是由SSL+http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。目前主流的SSL证书主要分为DV SSL 、 OV SSL 、EV SSL。
DV SSL
DV SSL证书是只验证网站域名所有权的简易型(Class 1级)SSL证书,可10分钟快速颁发,能起到加密传输的作用,但无法向用户证明网站的真实身份。
目前市面上的免费证书都是这个类型的,只是提供了对数据的加密,但是对提供证书的个人和机构的身份不做验证。
OV SSL
提供加密功能,对申请者做严格的身份审核验证,提供可信身份证明。
和DV SSL的区别在于,OV SSL 提供了对个人或者机构的审核,能确认对方的身份,安全性更高。
所以这部分的证书申请是收费的~
EV SSL
超安=EV=最安全、最严格 超安EV SSL证书遵循全球统一的严格身份验证标准,是目前业界安全级别最高的顶级 (Class 4级)SSL证书。
金融证券、银行、第三方支付、网上商城等,重点强调网站安全、企业可信形象的网站,涉及交易支付、客户隐私信息和账号密码的传输。
这部分的验证要求最高,申请费用也是最贵的。
我个人建议中小型网站选择DV和OV的证书就可以了,大型的网站选择EV。要是买证书的话我建议最好到阿里云上购买,如果不知道在哪里购买直接打客服就好了。
在购买完证书后会有四个文件
(1)生成一个新的文件ssl-bundle.crt,如上图最后一个文件和第二个文件分别做如下
cat STAR_hqssjt_com.crt <(echo) COMODORSAAddTrustCA.crt > ssl-bundle.crt
生成一个新的文件ssl-bundle.crt
(2)保存新的Key
把这个文件进行改名
mv hqssjt.com.key domain_com.key
(3)生成p12文件
openssl pkcs12 -export -in ssl-bundle.crt -inkey domain_com.key -out domain_com.p12 -name tomcat -password pass:111111
(4)生成tomcat使用的.jks文件
keytool -importkeystore -v -srckeystore domain_com.p12 -srcstoretype pkcs12 -destkeystore domain_com.jks -deststoretype jks -srcstorepass '111111' -deststorepass '111111'
(5)配置tomcat中conf的server.xml文件
在<Connector port=”80” 下面加入如下配置
.......
......./>
<Connector port="443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="1800" #这个要和上面一段配置的参数一致
SSLEnabled="true"
scheme="https"
secure="true"
sslEnabledProtocols="TLSv1.2,TLSv1.1,TLSv1"
clientAuth="false"
sslProtocol="TLS"
keystoreFile="/存放密码的路劲/domain_com.jks"
keystorePass="111111" />
配置到这里https就配置完成了,访问的时候要在最前面加上https否则不会自动跳转至https,如果不加还会和以前一样是http。以上操作我简称是通用模式 ,默认情况下既可以访问到HTTP,如果需要访问https必须在请求头加入https才行,这里就需要和开发人员说一下把接口都换成https,这里很重要,这里就是ios和微信端需要换一下,没必要所有的开发项目都去换,所有开发都去换这样工作量会很大的。原因嘛,大家都懂得。
如果老板经理需要所有项目都得是https的话,必须让所有的开发都的换成https有一个接口不对,都访问不到,因为下面的配置是要把所有请求流量都走HTTPS,配置下面要考虑清楚啦。
所以这里又会出现一个问题如何让http自动跳转至https
(6)配置tomcat使其可以自动跳转至https,配置conf里的web.xml文件
在最后的字段中找到</login-config>(4688行)和</web-app>中加入如下配置文件
<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>
(7)重启tomcat
测试访问 会自动跳转至https说明配置成功了
(8)遇见问题总结
在(2)(3)最好两个密码必须一致,密码不能设置太简单上面111111只是示例配置真实环境不可以这样。
在(5)的时候要写对路径和证书名字写错的话也是不正确的,这里的密码也和上面密码一致。
如果都配置完成了在微信里仍然访问不到https说明微信端配置的URL错误了,如果你是运维那现在就不关你的事情了,应该是前端或是微信开发的问题,让他们改一下url就好了
这里仍然还是http,所以微信端依然访问不到页面,要把这里改成https才行。
这里改完以后记得提醒开发一定要把调用接口的地方改成https,如果不改会造成各种问题
最后验证
配置https完成。