将全站http换成https


placeholder image
admin 发布于:2019-03-27 20:37:19
阅读:loading

在去年底的一次小小版本升级时,增加了全站的访问历史记录(记录的有referer),也顺便把友情链接处做了一个统计,增加了从友情站过来的访问次数统计,偶然有一天发现从一些个网站过来的请求无法正常获取到referer,经过分析后发现从https协议过来的网站请求均无法取得referer,后来又百科后了解到https可以正常跳转https和http(会增加referer参数),当时并没有想要去修改我站https的想法,只是萌芽了一颗早晚会尝试跳转的种子,只是从认知上有了一点点的了解,比如https不是免费的,而且很贵,但也有免费的,就是周期性的过期。

为了解决无法从https跳转过来的次数统计,我特意将友情链接处的https网站的统计数量给去掉了。

今天又琢磨起来这茬,感觉光搞个Tomcat的https不应该很麻烦啊,因为多年前尝试着在项目里面使用过https证书,记得当时直接搞jdk自带的keytools生成的,简单一配置就完事了。故再去了解了解它,经过百科,找到了一些基于Tomcat的设置跟我预期的一致,随即又整起来了,下面开始一点点来吧:

服务器环境:阿里云Windows、Tomcat8.5

(1)登录阿里云账号,进入控制台,找到安全(云盾)模块的SSL证书(应用安全),参考下图所示:

image.png

(2)进入SSL管理页,去购买(免费版)SSL证书,如下图:(2)进入SSL管理页,去购买(免费版)SSL证书,如下图:

image.png

image.png

image.png

(3)申请证书并填写信息验证域名,需要自行验证域名所有权:

image.png

(4)下载证书并配置Tomcat

提交申请后等待阿里云的审核通过,将证书下载至本地(服务器),注意了,每次下载都会生成一些新的证书密码,下载一次下来就拉倒了。下载后的压缩包文件中包含两个文件,分别是证书文件xxxx.pfx和证书密码文件xxx.txt。

从控制台管理页面点击部署产品的链接的帮助文档页面,选择Tomcat服务器,按照文章中的描述完成配置即可,官网提供的链接在设置完证书后早不见了。。。大意是有两种安装方式,推荐的安装方式为:JKS证书安装,具体安装过程参考如下:

①执行keytools命令,执行导入证书命令,如果没有配置环境变量,则需要进入到%JAVA_HOME%/bin目录下执行,参考如下:

image.png

②配置%TOMCAT_HOME%/conf/server.xml文件,增加证书相关的参数,开启ssl证书配置,参考下图所示:

image.png

如已增加这些参考后,重启Tomcat,并在服务器本地使用https://localhost:8443/即可访问,会看到很熟悉的提示证书不安全页面,上图中已经将8443修改为了443端口(https协议的默认端口号为443,同http的80一样)。

③修改https的默认端口号8443为443,一共需要修改3处(除了注释部分),当然也可以全部替换,再使用浏览器访问https://localhost:443/去访问吧。

④通过安全组设置443端口开放给互联网访问放行,云服务器--网络和安全--安全组,点击列表中的配置规则处,再添加安全组规则增加443端口放行就行了,如果没有发生问题你的站点现在可以被http和https访问,参考下图:

image.png

⑤现在要设置访问http时自动转向至https访问,需要修改%Tomcat%/conf/web.xml文件,在</welcome-file-list>标签处增加SSL安全设置,如下:

<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>

image.png

image.pngimage.png


过程中有几个步骤的截图没有给出来(等下次再申请时补充),但比较简单,自行摸索一下就可以了。至此,基于Tomcat8的阿里云https证书设置已完结,小小的总结一下下:

(1)在过程中我甚至会觉得我的4个第三方登录授权是否要修改,因为当时申请时使用的都是http协议,然而使用了https后并不需要修改(我以前的代码中申请开发者账号授权时使用的http协议,在授权传输时仍然使用http,响应时的http请求被上述的转换为https,没有深入了解是巧合还是需要修改一下更好);

(2)感觉服务器略微的有一丢丢慢了,目前没有去确定是由于使用了https还是数据库表数据增多了导致,先就这么着吧;

(3)解决了https转向http不传输referer的问题,https与https,http与https之间是传输的,可参考首页底部的友链数量(https协议的);

@20190329补充【从http修改为https后已经发现问题】

(1)当页面访问使用https访问https://www.chendd.cn/xxxx页面时,页面中使用了iframe嵌入的地址为http://www.chendd.cn/yyyy时,iframe就会出现跨域的错误,所以本站已将涉及到的几处iframe引用页调换至https了。

@20200321补充【https个人免费一年版到期后的续费处理】

所谓续费其实也不算,个人版本免费使用1年,1年期满了再支付0.0元购买个人版证书,同时完成验证即可,完成验证的过程有些尴尬,尝试了两次均为成功,后面按照https认证处的提示将已有的https的方式给还原掉,再点击认证就校验通过了,还原已有的https做了两个配置上的修改,即:还原TOMCAT_HOME/conf/server.xml与web.xml,去掉关于https处的设置即可,等待收到邮件提示并且下载证书并安装,如下图所示:

image.png

image.png

image.png

image.png

 点赞


 发表评论

当前回复:作者

 评论列表


留言区