在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配置tomcatconfserver.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完成。

 

posted @ 2017-12-04 11:54  青玉案元夕  阅读(4389)  评论(0编辑  收藏  举报