互联网安全和个人隐私越来越被人们关注,不仅仅是电商等交易网站都实现了全站https,现在微博、百度以及大大小小的博客都实现了全站https。如果你的网站不是https的,火狐、chrome、IE浏览器都会在地址栏前方提示用户 你当前访问的网站是不安全的。
为了跟风,赵岩的博客今天起全站使用https。
为了实现全站HTTPS。我主要做了以下工作:
第一、HTTPS证书
https使用SSL传输协议,SSL之所以安全,是因为加密传输的。初始公钥由服务器传递给浏览器,为了保证公钥安全的传输到浏览器,并被浏览器认可,我们需要一个由第三方权威机构签名的证书。详细参考《HTTPS到底是如何保证通信安全的》
普通的单域名证书一年需要1000多元,我们自然不会去花这个钱的。阿里云代理的赛门铁克提供个人免费域名证书。可以直接申请。阿里证书申请 申请的时候选择“Symantec ”、“免费型”、“一个域名”。阿里云会要求DNS或者文件验证,证明你是域名的拥有者。整个申请过程10几分钟可完成。
第二、升级Nginx
Nginx需要使用–with-http_ssl_module参数编译,确保支持https。为此我趁机会升级了下Nginx的版本到最新版本。
把你的证书pem文件和私钥key文件上传到服务器。
配置nginx.conf,监听443端口并加载证书。
原来监听的80端口,301转向443端口
server { listen 80; server_name zhaoyanblog.com; include black_list; rewrite ^(.*) https://$server_name$1 permanent; } server { listen 443; server_name zhaoyanblog.com; ssl on; ssl_certificate cert/xxx.pem; ssl_certificate_key cert/xxxx.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ......
第三、全站HTTPS
1、检查网站内有没有引用了别的网站的js。需要切成https地址。或者根据document.location.protocol自适应当前的访问协议。
比如:微博、百度统计、百度站长、百度联盟广告等等组件。
http://widget.weibo.com/weiboshow/index.php 改成 https://widget.weibo.com/weiboshow/index.php
2、检查是否直接使用了本站的http地址。改成相对路径。虽然已经配置了80端口301跳转。这样改会少一步对服务器的访问。
比如:http://zhaoyanblog.com/wp-content/uploads/2017/04/zhaoyanblog_2017-04-17_14-50-20.jpg
改成
/wp-content/uploads/2017/04/zhaoyanblog_2017-04-17_14-50-20.jpg
可以通过查看浏览器的调试信息,知道哪些访问的资源仍然是http的。
第四、通知百度进行HTTPS验证
在验证好全站已经使用https,并且访问http也可以301跳转到https。我们需要通知百度等搜索引擎进行https验证。因为搜索引擎在之前都是缓存我们的http地址。需要告知他我们切到https。避免导致收录的页面丢失。
直接登录百度站长,里面有个https验证页面,点击验证即可。
至此赵岩的博客已经实现全站https
除非注明,赵岩的博客文章均为原创,转载请以链接形式标明本文地址
本文地址:https://zhaoyanblog.com/archives/1036.html
但不排除有个别稍慢。
俺是个人博客,好像没有这个必要吧
厉害