naro

您所在的位置:首页 > 解决方案 > 其他 > 正文
阿里云http升级https协议二三事 发表时间:2018-05-14 20:29:05 点击:
导言:最近博客老被前端劫持篡改,攻击者会在header里注入一些加密文件,很烦人,虽然不知道攻击者具体用的什么手段,但能防一块是一块吧,所以打算把http升级到https。

服务器环境

阿里云ESC+nginx+lnmp+CDN


首先服务器是用lnmp安装,可省去很多安装配置烦恼,而且域名是做过CDN的,其实当时是为了防DDOS攻击和CC攻击的无奈之举,每天上T的流量攻击,清洗完恢复过不了半天又被攻击,买高防服务器成本太大,当然这是题外话。

一直使用阿里的服务器(差不多有四五年了),所以本文借助阿里服务器的Https证书配置步骤来抛砖引玉:

证书申请

1、阿里很多SSL证书都是企业定制级的,需要付费,至于付费跟免费的区别还是很大的,我一个小Blog就暂且用免费的吧,购买证书链接

0.png

这个真的是筛半天才筛得到这里,免费的果然藏得很深

购买完填报资料提交审核,通过了才能使用,这里的审核速度是很快的。


2、审核完成就可在【控制台=> 安全(云盾)=> 证书服务 】中找到相关证书,并与你的服务器和域名绑定。

1.png


Nginx服务器配置

1、下载对应的证书,共有“214585396360268.key”和"214585396360268.pem"两个文件。把这两个文件上传到Nginx服务器根目录的cert文件夹(这个文件夹是新建的),我的文件目录路径是/usr/local/nginx

2.png

2、需要检查Ngninx是否安装SSL模块,在nginx/sbin文件夹下运行。

nginx -V

如果configure arguments中存在 --with-http_ssl_module 说明SSL模块已经安装 。

3.png

3、进入需要配置域名conf文件中,我的文件路径是/usr/local/nginx/conf/vhost/,把监听端口从80改成443(80是http协议,443是https协议),然后如图添加ssl的一些默认配置项。

4.png

这里一定要把两个文件的路径填对!

4、重启nginx服务器,查看端口状态

lnmp restart nginx //重启nginx 不同的系统请选择不同的重启方式 
netstat -lntup|grep 443 //查看443端口状态

5.png


通过以上步骤基本上就完成了https协议的配置,可在前台查看效果。


但这里新的情况发生了,你会发现页面一片混乱,当时我质疑过是不是过程中配置的问题,但我们来看下报错信息“This request has been blocked; the content must be served over HTTPS”,原来https里引入http的资源会涉及到跨域问题,一些css、js和通过Ajax请求的http资源都会被block调,其实解决这个问题最简单可行的办法是在head头部添加一行meta,意思是自动将http的不安全请求升级为https。

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

6.png

做完这项工作再运行一次就OK啦。