全站 HTTPS 没你想象的那么简单( 二 )

2.前端 html、JS 资源引用存在 HTTP前端页面及 js 文件中,写死的 http:// 协议资源及跳转改为根据当前协议切换(//) 。使用相对协议,如:
<script src=https://www.isolves.com/it/wlyx/wzjs/2020-04-18/"//domain.com/jquery.js全站 HTTPS 没你想象的那么简单或者代码自行判断都可以 。如果一个页面内包含多个域名请求,需所有域名均支持https,否则部分浏览器会有警告提醒或打不开 。
3.移动端适配 HTTPS如果你们存在移动客户端(APP)也需要适配 HTTPS,所以必须做调用接口的相应修改,当然,要注意运营商 DNS 劫持(尤其是移动)也会对 HTTPS 请求成功率造成很大影响,其实可以做好 HTTP/HTTPS 两种协议都支持,做好出问题随时动态降级切换准备 。
4.项目中存在的配置问题项目中用到的配置文件中存在 HTTP 链接,要充分了解其用途 。如果不是可以统一动态更新的配置文件,都要考虑更改后做服务的发布,这时候要来考虑对生成环境业务的影响以及测试、开发环境的影响等问题 。如页面间跳转、权限、登录验证、第三方服务(支付、推送)回调这些配置等 。
5.关于 request.getScheme() 这个坑如果你的架构上使用了 Nginx + Tomcat 集群, 且 Nginx 下配置了 SSL,Tomcat 没有配置 SSL,这时候其实客户端已经是使用 HTTPS 协议了,但你的 Tomcat 中用 request.getScheme()、request.getRequestURL() 会获取到的是 HTTP,并不是 HTTPS。当然可以代码中避免,或者通过配置 Nginx 和 Tomcat 解决,看这篇文章:http://www.cnblogs.com/interdrp/p/4881785.html
【全站 HTTPS 没你想象的那么简单】6. SSL 证书类型在之前说选购 SSL 证书的时候,你就要充分考虑业务上域名需要的证书类型,避免需要泛域名证书而你买了单域名证书,当然泛域名证书还是分为支持级别的,如购买 *.example.com 证书,那么该证书支持 a.example.com, a1.example.com, a2.example.com 以此类推域名,但是不支持 b.a.example.com(另一级), b1.a.example.com 类域名,如需支持,需另外再购买一张 *.a.example.com 证书 。
7.Nginx 配置同一个 server 段不支持配置多个证书8.Nginx 配置 HTTP 强制跳转 HTTPS通过配置 Nginx 域名 HTTP 请求 302 跳转实现全站 HTTPS 。千万不能有 POST 请求,这时候浏览器会先做 302 跳转,在以 Get 方法请求会导致 Post Body 丢失 。具体配置如下:
server {listen 80;listen 443 ssl;server_namewww.domain.com;ssl on;ssl_certificate 1_www.domain.com_bundle.crt;ssl_certificate_key 2_www.domain.com.key;ssl_session_timeout5m;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphersECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;ssl_prefer_server_cipherson;if ($scheme != 'https') {rewrite ^(.*)$https://$server_name$1 permanent;}location / {roothtml;indexindex.html index.htm;}}9.所有环境均要进行升级不仅仅要考虑生成环境进行全站 HTTPS 升级问题,包括开发、测试、预发布等多种不同环境均要进行升级,来保持与生产环境的一致性,减小不可预估因素的发生 。如果你没有完善的运维系统,一个个配置文件改的可是真的很痛苦,你试试想想看上百个配置,泪...
10.打死你都想不到的地方太多了,自由发挥吧 。做到兵来将挡水来土掩,佛来斩佛,魔来斩魔就行了 。
注意事项写完了,现在插播一条硬广,我们团队目前正需要对技术有追求的小伙伴一起来共同学习进步,看到这篇文章有想换个工作环境的,当然你要基本了解使用过分布式架构,快快联系我 。
总结一下不知道这一篇算不算所谓的「干货」了,现在好多人都喊着要所谓的干货,其实哪有那么多干货阿 。这一篇主要写了一下在全站升级 HTTPS 的过程与注意点,几乎都是在实际工作中步骤的重现了,当然,升级完成我们还是需要对整个系统进行性能、速度的测试,以及如何更好的利用 HTTPS,比如上 HTTP 2.0,据说提升很大的 。




推荐阅读