服务器环境
阿里云ESC+nginx+lnmp+CDN
首先服务器是用lnmp安装,可省去很多安装配置烦恼,而且域名是做过CDN的,其实当时是为了防DDOS攻击和CC攻击的无奈之举,每天上T的流量攻击,清洗完恢复过不了半天又被攻击,买高防服务器成本太大,当然这是题外话。
一直使用阿里的服务器(差不多有四五年了),所以本文借助阿里服务器的Https证书配置步骤来抛砖引玉:
证书申请
1、阿里很多SSL证书都是企业定制级的,需要付费,至于付费跟免费的区别还是很大的,我一个小Blog就暂且用免费的吧,购买证书链接。
这个真的是筛半天才筛得到这里,免费的果然藏得很深
购买完填报资料提交审核,通过了才能使用,这里的审核速度是很快的。
2、审核完成就可在【控制台=> 安全(云盾)=> 证书服务 】中找到相关证书,并与你的服务器和域名绑定。
Nginx服务器配置
1、下载对应的证书,共有“214585396360268.key”和"214585396360268.pem"两个文件。把这两个文件上传到Nginx服务器根目录的cert文件夹(这个文件夹是新建的),我的文件目录路径是/usr/local/nginx
2、需要检查Ngninx是否安装SSL模块,在nginx/sbin文件夹下运行。
nginx -V
如果configure arguments中存在 --with-http_ssl_module 说明SSL模块已经安装 。
3、进入需要配置域名conf文件中,我的文件路径是/usr/local/nginx/conf/vhost/,把监听端口从80改成443(80是http协议,443是https协议),然后如图添加ssl的一些默认配置项。
这里一定要把两个文件的路径填对!
4、重启nginx服务器,查看端口状态
lnmp restart nginx //重启nginx 不同的系统请选择不同的重启方式 netstat -lntup|grep 443 //查看443端口状态
通过以上步骤基本上就完成了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">
做完这项工作再运行一次就OK啦。