SSL证书

为什么要用HTTPS?

HTTP 协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的 HTTP 的网站是不太安全的。所以, Google 的 Chrome 浏览器将在 2017 年 1 月开始,标记使用不加密的 HTTP 协议的网站为 Not Secure,不安全。

HTTPS 会为您的网站建立加密的信息安全通道,保证数据传输的安全,防止传输内容被第三方冒充或篡改。

部署 HTTPS 网站的时候需要证书,证书由 CA 机构签发,大部分传统 CA 机构签发证书是需要收费的,这不利于推动 HTTPS 协议的使用。

证书的类型

SSL证书没有所谓的“品质”和“等级”之分,只有三种不同的类型。SSL证书需要向国际公认的证书证书认证机构(简称CA,Certificate Authority)申请。CA机构颁发的证书有3种类型:

  • 域名型SSL证书(DV SSL):信任等级普通,只需验证网站的真实性便可颁发证书保护网站;
  • 企业型SSL证书(OV SSL):信任等级强,须要验证企业的身份,审核严格,安全性更高;
  • 增强型SSL证书(EV SSL):信任等级最高,一般用于银行证券等金融机构,审核严格,安全性最高,同时可以激活绿色网址栏。

SSL证书的颁发机构 - CA机构

  • Let’s Encrypt: Let’s Encrypt 是目前使用范围最为广泛的免费 SSL 证书,而且官方博客宣布,自 2018 年开始提供通配符 SSL 证书,也就是 wildcard certificates。
  • Symantec
  • GeoTrust
  • TrustAsia 亚信
  • AlwaysOnSSL
  • Comodo
  • Cloudflare: Cloudflare 很早就开始提供免费 SSL 证书,前提是你的域名要放在 Cloudflare 解析,注册为 Free Plan 就可以。

自从 Let’s encrypt 开始提供免费DV SSL后,SSL 证书市场就已经开始洗牌了。

1
2
Issued by: Encryption Everywhere DV TLS CA - G1
Issued by: Let's Encrypt Authority X3

第三方机构 - 辅助申请证书

阿里云
阿里云提供免费DV SSL证书

  • Symantec 免费版 单域名证书 - 免费
  • GeoTrust 通配符DV SSL证书 - 收费

又拍云 免费提供 Let’s Encrypt 和 Symantec 签发的两款 DV SSL 证书,也是业内唯一一家提供两种。立即签署颁发,并实现了Let’s Encrypt 自动续期功能。

腾讯的就是方便,不过时间只有一年。

cloudflare 免费版并不是很快。而且他强制你 nameserver 指过去(可把域名解析都托管过去,也可只托管指定主机)

coding.net coding pages会自动给证书续期

注意:申请 SSL/TLS 证书需要通过 Let’s Encrypt 的 HTTP 方式验证域名所有权。如果您的域名在境外无法访问 Coding Pages 的服务器,将导致 SSL/TLS 证书申请失败。

Let’s Encrypt证书

SSL 证书服务,大家用哪家的?

  • Let’s Encrypt:免费,快捷,支持多域名,三条命令即时签署+导出证书。缺点是暂时
  • 2018年3月14日,Let’s Encrypt 对外宣布 ACME v2 已正式支持通配符证书

Let’s encrypt 的免费证书默认有效期为 90 天,到期后如果要续期可以执行:

1
certbot-auto renew

操作流程

要使用 HTTPS,你需要安全机构颁发的安全证书,然后配置服务器,去使用这个证书。下面介绍一下在阿里云免费申请安全证书,还有配置一般的 NGINX 服务器支持 HTTPS 的方法。

  1. 申请证书、绑定域名
  2. 下载证书
  3. 使用证书: 配置 相应的Web服务器

github pages如何使用SSL证书?

虽然 Github 早在2016年就已经为 *.github.io 添加了 HTTPS 支持,但自定义域名开启 HTTPS 却是一件令人头疼的事情。大家只能使用 Cloudflare 之类的支持 SSL 的 CDN 曲线支持 HTTPS 。

好消息: 2018年5月1日,GitHub 宣布与 Let’s Encrypt 合作,为 Github Pages 自定义域名提供官方的HTTPS 支持。如果在 Github Pages 绑定了域名,现在可以使用 Let’s Encrypt 签发的 SSL 证书为绑定的域名开启 HTTPS 访问。

如果 enforce HTTPS 不可勾选,并且提示 Not yet available for your site because the certificate has not finished being issued ,说明证书尚未申请完成,等待一天即可。

github pages采用的github的服务器,不能直接设置https,但可以通过CDN来设置SSL

  • github_pages + cloudflare(cdn+https)
  • gitpage + 又拍云(cdn,https)

又拍云需要域名备案

cloudflare

配置CDN流程

  1. 进入万网控制台
  2. 修改dns服务器,默认dns服务器 dns1.hichina.com,dns2.hichina.com,修改成cloudflare的dns服务器

To use Cloudflare, you need to change your domain’s authoritative DNS servers, which are also referred to as nameservers.

用 cloudflare,但是他要我更换 dns 服务器,更换后貌似导致域名访问不了 coding pages 的服务器了。原因是cloudflare接管DNS解析后,不支持双线部署。

设置https

  • 在CF的Crypto页中,SSL设置为Flexible。这将允许CDN到github pages之间的访问为http。
  • 现在,通过https://你的域名已经可以访问站点首页了。

强制https

CF提供Page Rules功能,可设置路由规则。通过规则中的Always use https选项,可以将用户强制跳转到https

参考 https://blog.chionlab.moe/2016/01/28/github-pages-with-https/

证书信息

1
2
网站: blog.eson.org
颁发给: sni90514.cloudflaressl.com # 这个是

原理

它的原理是当访客使用 HTTPS 访问站点的时候,

  1. 从访客到 Cloudflare
  2. 然后从 Cloudflare 到站点这段是明文的

s

虽然不是全程加密,假设从 Cloudflare 到站点的信道相对可靠的话,也能很大程度上解决中间人劫持的问题。

  • 更改DNS服务器。这样万网域名eson.org中的所有配置失效,转由cloudflare提供DNS解析服务。
    • 但是cloudflare没有线路配置,也就没必要双线部署了
  • DNS导向到github page之前,进行了缓存。

扩展阅读

  • 关于免费SSL证书的那些事儿 | 知乎