先介绍一下我的上下文,我的博客是http的模式,但是想做成https安全加密的模式,就图个帅气。 话说博客类的网站很少有人用使用https。 据说google 会针对https的网站加一些权重,可提高你的命中几率,然后我居然信了。 对于证书的申请, 我不可能花钱去买,这里有两个选择,startSSL和let’s encrypt ,他们都是免费的,可以搞定绝大数的浏览器授权。唯一所谓的麻烦就是需要自己续签下,对于你来说也只是一行命令而已。
该文章写的有些乱,欢迎来喷 ! 另外文章后续不断更新中,请到原文地址查看更新.
Let’s Encrypt是国外一个公共的免费SSL项目,由 Linux 基金会托管,由Mozilla、思科、Akamai、IdenTrust和EFF等组织发起,目的就是向网站自动签发和管理免费证书,以便加速互联网由HTTP过渡到HTTPS,目前Facebook等大公司开始加入赞助行列。
let’s encrypt 证书使用过程我就简单的过一下,总的来说没什么难的.
创建申请证书
#xiaorui.cc git clone https://github.com/letsencrypt/letsencrypt cd letsencrypt ./letsencrypt-auto certonly --standalone --email rfyiamcool@163.com -d xiaorui.cc
中间碰到这个页面就说明你已经OK了…
你可以在 /etc/letsencrypt 目录下看到你生成的证书.
ll /etc/letsencrypt/live/xiaorui.cc/fullchain.pem ll /etc/letsencrypt/live/xiaorui.cc/privkey.pem
letsencrypt的证书是90天,也就是说 90天之后就失效了, 你可以再次续约.
./letsencrypt-auto --renew certonly --email rfyiamcool@163.com -d xiaorui.cc
到此为止,证书已经申请完毕,我们需要配置nginx引用这些证书。
在签发证书的时候,记得关闭nginx,或者其他占用80端口的服务。 因为letsencrypt自己会起个服务做临时的认证,当证书下发后,你就可以再次启动nginx了。
下面是Nginx ssl证书的主要配置片段
如果你是直接使用web框架,配置的过程是一样的
#xiaorui.cc
server {
listen 80;
server_name xiaorui.cc *.xiaorui.cc;
return 301 https://hostrequest_uri;
}
server {
ssl on;
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/xiaorui.cc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/xiaorui.cc/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;
index index.php;
到这里已经已经实现了你网站的证书配置, 看到这里才是我们正题的开始,也就是说 我为什么又撤回到http的模式。
遇到的问题
情况不是很美好,当我打开 xiaorui.cc 主站的时候,发现没有小绿锁,看到那提示我就知道网站引用的链接不仅仅有https的,还有http的。 那怎么办? 只能把这些能改的都改掉。 首先把cnzz这个代码统计改成https模式的,百度广告联盟也改成https的,但最后剩下这多说让人很是苦恼。 多说作为国内头号社会化评论选手居然https兼容性这么差。 对于头像来说,他只能使用外链的方法,他在接口里也没有设置的地方。 最后通过多说插件的源码来实现的头像img的https. 原理很简单,外链不再是直接访问,而是通过我后端的nginx去转发。 勉勉强强算是解决了。
再让我们解决cdn的问题,我用阿里云的cdn已经有一年的时间了,在使用阿里云配置全站https的时候,出现了网站调试不同的问题。 最后解决方法是在博客里切域名,静态的文件在一个static.xiaorui.cc域名里。 static是xiaorui.cc的二级域名,倒不用重新独立证书。
seo,seo,seo….
我主要测试了google baidu 爬虫的https测试,结果令我满意,是可以抓取的. 但是百度抓取https时不时出问题,而且有点慢… 他的耗时居然比google的都要多,这不科学。 我的解决方法是在nginx 做ua的判断,如果看到是爬虫的ua就访问80的数据,非爬虫的ua就转跳到443 https.
#xiaorui.cc listen 80; ssl on; listen 443 ssl; set flag 0; setmark 0; if ( server_port = 80 ) { setflag 1; } if ( http_user_agent !~* "Baiduspider|Sogou web spider|Googlebot|bot|JianKongBao" { setflag flag+1; } if (flag = 2 ) { return 301 https://hostrequest_uri; }
性能问题, https是消耗性能我是知道的,但上了一段时间的https之后,发现有变慢。 更换了nginx ssl优化组件后有些提升,但提升不大.
头像连接失效, 原始评论会记录头像的连接,有不少连接更换成https之后无法访问。 多说里面自带了用户访问痕迹,由于https之后,也是无法访问。
我终于明白为什么有人不用多说评论,而是采用Disqus来实现社会化评论。 越想越蛋疼, 真想滚回http….
更换成https后,出现了访问慢和一些外链的头像和照片无法访问。 越来越觉得没必要因为https这个安全第一的需求,花时间解决这些问题….
最后,取消https,滚回http…
END.
111111111
Powered by Duoshuo评论
不错,有想法!!!
折腾才有进步啊
够折腾的。。。