HTTPS已是网站发展趋势,现在很多大网站都已经开启了全站HTTPS访问,我也得及时跟进才行。部署过程一路波折跌宕起伏,因为环境的原因踩了不少坑。
一开始用的七牛云的免费SSL证书和融合CDN(七牛云的免费SSL证书必须使用它的融合CDN),而且HTTPS的流量不免费(不能计算在赠送的免费流量中),对于我们非盈利的个人站长来说还是不划算,所以试用了两天后果断放弃。
然后百度查资料,学习别的站长先是在 https://www.sslforfree.com/申请免费证书(时效90天),申请很简单百度上有很多图文介绍。有了证书后就需要配置到服务器上。如果不使用第三方CDN加速服务,直接配置到服务器上就可以,否则就得注意了。
因为我之前用七牛云的CDN对图片进行加速,现在要开启HTTPS就不能免费用了。百度云加速只对企业(付费用户)开启SSL加速。所以现在换成了360网站卫士,有加速有防御还能免费绑定SSL证书。证书直接上传到360网站卫士后台就可以了,到此,基本上部署完成。
当然没完,刚开始用七牛云部署后就遇到很多坑,开启HTTPS访问后前台显示不正常,因为站内还有很多链接是http的。一开始是手动修改模板,终于前台正常了,可后台又进不去了。先不管了,暂时用着,换360网站卫士来部署后,接着折腾这个问题。最后终于查出原因,并找到了比较简单的解决办法。
原因是,我的环境是Nginx(反向)+ Apache(后端),默认的Nginx配置中反向代理时缺少一些服务器环境参数,导致apache无法识别是否使用了HTTPS,wordpress也就无法正确判断是否开启SSL模式,导致HTTPS访问时出现异常。
解决方法:在Nginx站点配置文件中添加下面代码,重要的是关键行
location{ proxy_set_header Host $host; proxy_set_header X-Forwarded_SSL https; proxy_set_header X-Forwarded_Proto https; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
然后在wordpress安装插件:SSL 不安全内容修复器,进入参加设置页面参考下图设置即可。地址:https://cn.wordpress.org/plugins/ssl-insecure-content-fixer/changelog/最最后,因为担心前面申请的免费SSL到期后不能续期(不确定),又去研究了其他免费生成SSL证书方式。经过研究测试,免费可信的SSL基本都是90天的,但可以续期。目前最简单可靠的是 Let's Encrypt免费SSL证书,生成方法是请看 https://certbot.eff.org/
步骤1:自动安装工具和环境(遇到问题直接回车和yes)
wget https://dl.eff.org/certbot-auto chmod a+x certbot-auto ./certbot-auto
步骤2:生成域名证书
./certbot-auto certonly --email admin@mebox.cn --agree-tos --webroot -w /www/www.mebox.cn -d www.mebox.cn
成功后证书会存放在这里 /etc/letsencrypt/live/www.mebox.cn/目录中
步骤3:将SSL文件部署到网站中,以Nginx为例
listen 443; ssl on; ssl_certificate /etc/letsencrypt/live/www.mebox.cn/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.mebox.cn/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/www.mebox.cn/chain.pem;
续期:Let's Encrypt续约SSL证书
./certbot-auto renew --dry-run
先写这么多,稍后在完善。。