Press "Enter" to skip to content

你的博客,有必要加上ssl证书吗?

在开发个人博客的过程中,产生了一个疑问,我们的个人博客到底需要加ssl证书吗?

本文主要对个人博客是否应该加入ssl证书进行分析

为什么我设置了ssl安全证书?

首先声明一下。我的博客是设置了ssl证书的,因为当时开发小程序,而小程序的接口必须要有ssl安全证书的。当时为了学习如何配置,把自己的博客就改成了现在这个地址https://blog.colorful3.com。配置完成后觉得并没有什么作用,反而在今天安装seo插件的时候给我造成了一些的困惑。

我也浏览了一些论坛,大多开发者设置了ssl的目的也只是为了“好看”而已。只有少数是为了安全。而且,我认为个人博客,只要自己防备到位,根本涉及不到安全问题。也没有那么多人会处心积虑攻击你的博客。国内凤凰网搜狐网人民网等这些大型门户网站同样可以通过http访问,LaruenceRango 等技术大牛的博客也并没有加入ssl。至少对于我来说,盲目加入ssl证书的做法是不明智的。

HTTP下加入SSL层后,我遇到的问题

因为我的博客之前都是没有做过seo优化的,今天一时兴起,更新了自己的博客主题(仿照PHP大神鸟哥的blog改的),然后安装了seo插件。我安装的是(All in One SEO Pack)这个SEO插件(也和鸟哥使用的插件一样),也推荐大家安装这个插件,的确是插件如其名,非常的全面。使用免费的版本已经足够大家日常玩耍了。好了,切回正题:为什么https给我造成了困惑呢? 我再安装完成插件后,打开Chrome浏览器控制台,刷新首页,报了如下错误。

好吧,英文翻译是:混合内容:我的这个页面被加载了https。但是我请求了一个不安全的js脚本,请求被阻塞了,因为请求的内容必须是在https服务下面的。 由于我安装的seo插件会调用百度分享的js资源,所以报了这一堆警告。

https为了安全,是不允许跨协议调用的。也是就是https不能去调用http下的js、css等静态资源。

HTTPS无法加载外部js的解决办法

解决方法大概有三种

相对协议

如果你的网站同时准备了 https 资源和 http 资源,那么,可以使用相对协议可以帮助你实现当网站引入的都是 http 资源,网站域名更换为 https 后的无缝切换。

具体使用方法为:

<img src="//domain.com/img/logo.png">

简而言之,就是将URL的协议(http、https)去掉,只保留//及后面的内容。这样,在使用https的网站中,浏览器会通过https请求URL,否则就通过http发送请求。

附注:如果是浏览本地文件,浏览器通过file://协议发送请求,导致请求失败,因此本地测试最好是搭建一个本地服务器。

HTML5 Boilerplate 使用相对协议请求 Google CDN 中的 jQuery ,使用方式为:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>  <script>!window.jQuery && document.write(unescape('%3Cscript src="js/libs/jquery-1.4.2.js"%3E%3C/script%3E'))</script>

上面的例子中除了引用 Google CDN 中的文件外,还添加了一个本地 jQuery 链接,以便连接 Google CDN 失败后,使用本地副本。代码判断过程为:

  1. 首先检查 jquery 对象是否存在,如果存在,证明 Google CDN 运行正常;
  2. 如果不存在,则说明连接 Google CDN 失败,引入本地 jQuery 库。

使用 iframe

使用 iframe 的方式引入 http 资源,比如在 https 里面播放优酷的视频,我们可以先在一个 http 的页面里播放优酷视频,然后将这个页面嵌入到 https 页面里就可以了。

另外一个典型的例子是在 https 页面里通过 Ajax 的方式请求 http 资源,Chrome 是不允许直接 Ajax 请求 http 的。如果两个页面的内容都可以控制的话,当前窗口可以 iframe 窗口进行通信。

其他用法

这个小技巧同样适用于 CSS :

.omg { background: url(//websbestgifs.net/kittyonadolphin.gif); }

附注:<link>@import引入样式表时使用相对协议,IE7、IE8 会下载文件两次。

结论:个人博客真的需要ssl吗?

在开篇已经做过分析,综合考虑,我认为个人博客不需要安装ssl证书。如果大家不需要安装常用的插件、不需要引入一些外部静态资源,或者愿意通过繁琐的配置来解决某些https所带来的问题,可以使用ssl。如果仅仅是为了好看,那劝大家还是暂时不要配置了。

One Comment

  1. Porous
    Porous 2018年9月25日

    我觉得不错。分析的很有道理

发表评论

电子邮件地址不会被公开。 必填项已用*标注