[技巧]加密传输大势已来 本站开通双通道传输

  • 2017-08-02
  • 457
  • 4
  • 0

自从改成了阿里云CDN,发现阿里云支持一键开启HTTPS,直接在阿里云申请了免费证书,五分钟后https就可以连接成功了!!!但是页面全部都是http的.那肯定页面混乱啦,需要修改一下!

https是趋势,但也不能抛弃http,所以就这样啦:

申请证书(阿里云版本)


地址:阿里云免费证书

申请成功后,下载证书,分别把证书内的文本粘贴到阿里云https设置中:

实现方法


不管是HTTP还是HTTPS请求,页面中的地址都是和请求协议保持一致,避免出现页面是HTTP,而页面中的链接却是HTTPS的情况,那么前面的做法也就没了意义。

如何修改为相对模式,估计有同学又玩不转了。

直接粗暴替换前台输出的代码即可(注意代码可能存在转义问题,请到底部看张戈博客,复制此代码,抱歉):

//将所有超链接改为相对模式
if(!is_admin()){
       ob_start("rewrite_urls");
     }
function rewrite_urls($buffer){
	$buffer= preg_replace('/("|')http(s|)://([^"']*?)'.$_SERVER["HTTP_HOST"].'/i','$1//$3'.$_SERVER["HTTP_HOST"],$buffer);
	return $buffer;
}

将以上代码新增到 WordPress 主题的functions.php中即可。以上代码只会替换和网站主域名有关系的超链接,八竿子打不着的外部超链接就不管了,有需求自行参考解决。

发现头像还是http的.所以解决思路是使用Gravatar 头像服务的(HTTPS)加密线路:

function dmeng_get_https_avatar($avatar) {
	//~ 替换为 https 的域名
	$avatar = str_replace(array("www.gravatar.com", "0.gravatar.com", "1.gravatar.com", "2.gravatar.com"), "secure.gravatar.com", $avatar);
	//~ 替换为 https 协议
	$avatar = str_replace("http://", "https://", $avatar);
	return $avatar;
}
add_filter('get_avatar', 'dmeng_get_https_avatar');

一样加入functions.php底部.

演示


提交HSTS


提交地址:https://hstspreload.appspot.com/  (需要翻墙访问)

提交直到批准,我们的网站必须强制301跳转到HTTPS,否则无法通过,完成审核后再取消301即可。

当然,提交后会显示正在提交到preload list,快的话两三天,慢的话一两个月都是有可能的:利用HSTS安全协议柔性解决全站HTTPS的兼容性问题

好了,罗里吧嗦分享了一大堆,自行参考吧!(进张戈博客,参考具体的提交方案)

参考文章


张戈博客

我爱水煮鱼

评论

    • Waylee回复
      WebView 4 WebView 4 Android 6.0.1 Android 6.0.1

      我也看了,现在百度站长工具 支持加入https列表,特别优待加密哦。

  • 小苍老师回复
    Google Chrome 50 Google Chrome 50 Windows 7 Windows 7

    个人独立博客,真的需要https吗?还是要看个人需求吧!但是企业什么的真心需要!

    • Waylee回复
      Google Chrome 59 Google Chrome 59 Android 6.0.1 Android 6.0.1

      现在运营商路由器劫持愈演愈烈,很有必要,我每次登录http的网站,经常遇到劫持广告。

      此外登录弄https,这个安全性是有必要的。
      —–
      现在我选择都兼容,弄个过渡期吧,https总是有太多不方便。

发表评论