快到年末了,估计不少人都在折腾这货,其实HTTPS很早就出现了,只是一直像IPv6那样,普及率不高。此次谷歌和苹果两大巨头决定强推HTTPS,估计也是由于安全问题,毕竟有了太多“前车可鉴”,是时候该有所行动了。html
领袖的“振臂一呼”,固然“应者云集”,国内各互联网服务商、知名网站、包括草根站长们,都纷纷跟进,陆续部署起了SSL证书,全面迎来了一波HTTPS升级浪潮。做为关注互联网的我,喜欢尝试新事物,因此趁着博客改版之际,也试了下,为了点亮那把小绿锁,真是各类折腾,在此作个阶段性小结,分享下踩坑经验吧。nginx
HTTPS的安全基础是SSL,所以加密内容就须要配合SSL证书,目前国内外都有厂商提供免费版的SSL证书,下面就我知道的作个介绍吧:git
这家目前是国外信誉最好、推荐度最高的,由Mozilla、思科、Akamai等组织发起,来头不小。github
证书时效:90天,到期能够手动renew七牛云存储
部署教程:能够参考这篇,写的很是详细了。另外,下面评论里有推荐一个网站:https://certbot.eff.org/,也是基于官方的程序,但操做上要更简单些,我试了下,能够成功获取到证书,这里就以CentOS 7 LNMP环境为例,大体命令以下(可访问该网站获取更多详情):安全
a. 下载安装程序bash
yum install certbot #下载安装程序 certbot certonly #此处为只获取证书
b. 而后会弹出图形界面,按提示操做便可,切记网站根目录路径要写正确,由于后面要作验证。服务器
c. 这里坑就来了,可能会有童鞋和我同样,全部设置都填写无误,但每次都提示404验证失败,Why?后来查了下,发现是Nginx的锅,默认对.开头的访问有阻挡,须要添加配置以下:session
location ~ /.well-known { allow all; }
d. 这样证书就顺利下来了,通常会在/etc/letsencrypt/live/你的域名/下面,有4个.pem文件。最后在nginx的配置里添加下ssl的内容,我加的是这些:网站
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/roubintech.com/fullchain.pem; #路径要写对 ssl_certificate_key /etc/letsencrypt/live/roubintech.com/privkey.pem; #路径要写对 ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m;
e. 90天到期以后,能够手动输命令renew,网站上也有写,运行certbot renew --quiet
,renew后建议再跟上service nginx reload
命令。
这里放一块儿,是由于目前国内各家都是和赛门铁克合做,发的他家证书,并且操做上也相似,都要验证域名等。而由于DV SSL证书,是一张证书只能对应一个域名(附送www前缀),因此申请前,建议先想好用哪一个域名。
证书时效:1年
部署教程:参考下七牛官方的说明文档吧,挺详细,就是CNAME的主机记录填写,记得把后面的主域名去掉。
若是是VPS、云主机、服务器等,可使用上面申请的SSL证书直接部署,而像虚拟主机那种自己不支持HTTPS,或没法开启443端口的网站,就可使用CDN来“曲线救国”了。
阿里云/七牛/腾讯云都有本身的CDN,再配合上自家的证书,是极为方便的,但整体价格嘛,呵呵,仁者见仁吧,这里要介绍的是推荐度比较高的VeryCloud云分发(CDN)服务,50G/月的免费流量,够用了。
部署教程:VeryCloud官方的帮助文档,记得先上传你的证书(七牛的证书只能用于自家服务),而后建立频道,用主域名就好,原站点写IP,回源用HTTP方式,由于你网站自己不支持嘛(支持的请用HTTPS),而后按要求,到DNS管理的地方,为主域名添加一条CNAME,建议此时给WWW的记录也加一条CNAME,这样两个都走CDN,而后A记录就能够先暂停了。
这里我用的是七牛的云存储,支持图片等HTTPS方式访问,配合上七牛融合CDN,速度很快
部署教程:七牛官方文档
由于加速资源访问的是七牛云存储,可能须要一个二级域名作解析,并且上HTTPS的话,一样须要对应的证书,略麻烦,其实还好,直接在七牛申请挺快的,固然你不用担忧一个网站上了多张SSL证书会有问题(心里是多想来一张wildcard SSL证书啊),有个东西叫SNI能够解决。
多说如今用的蛮多,但它对HTTPS的支持还不理想,目前第三方社交帐号的头像、表情还不行,因此有时你会发现折腾半天,小锁仍是灰的,可能就是这个缘由。
固然解放方法也不少:
a. 头像:不使用第三方社交帐户的头像,而是后台从新上传一个
b. 表情:咳咳,我是直接选择不用表情啦,一是懒,二是以为丑~
c. 换掉多说的js: 参考这篇,而后Github上还专门有个repository,也能够解决
目前就折腾了这么多,若有疑问,欢迎交流O(∩_∩)O