【杂谈】免费SSL证书那点事

发布于 / 日常杂谈 / 28 条评论

最近遇到一个在境外的朋友跟我说没有好用的SSL证书用了,我一阵纳闷随手把FreeSSL发给他了,结果他跟我说这个网站现在必须要+86的电话号验证了……

因为实名的原因显然国内厂商这些实名认证才能签发的SSL他们是摸不到的,加上最近去年白嫖的AlphaSSL证书过期、Let‘s Encrypt的OCSP被污染等等问题,最近可以说是把我能找得到的证书统统都试了一遍,就简单推荐一下我最近尝试的这些证书吧。

题图来源微博@选择你的叶修,本站仅做引用,如果喜欢请务必关注画师太太啊≧ ﹏ ≦!


一、免费SSL

TrustAsia

特色:一年有效期、DigiCert根证书

TrustAsia即亚洲诚信,可以说是对中国大陆SSL市场贡献最大的一个SubCA了,包括腾讯云、又拍云、Ucloud、宝塔等等服务商均是其免费产品的提供者,我在友链里面的随手翻翻十个人至少五个都是亚信的证书。

根证书DigiCert非常大众,曾经免费证书也使用了国内的ocsp.dcocsp.cn,但是后来似乎免费版都换回官方的ocsp.digicert.com了,整体兼容性非常棒,是个人站的不二的选择。需要注意的是TrustAsia的证书全平台同一根域下只能有20张有效(不包含过期和吊销的),所以免费也是有限度的,超过这个限度建议付费或考虑通配符证书。

相关平台:腾讯云、宝塔、Ucloud


DigiCert

特色:一年有效期、DigiCert官方CA

DigiCert也就是Symantec自己有一个Encryption Everywhere的入门级CA,厂商需要向DigiCert缴纳一定的费用才能使用,国内主要就财大气粗的阿里云在免费签发,景安的估计是因为没钱了接口已经撤了,海外name.com等厂商均仅向自己的域名+虚拟主机用户开放。

优点与亚洲诚信一样,但是阿里云也是限制账户中最多20张免费证书的,有需求可以搭配着亚信的额度一起用。

相关平台:阿里云、华为云


TrustOcean

特色:三个月有效期、Sectigo根证书、IP证书、通配符、ECC

TrustOcean就是环智中诚,以前好像叫环洋诚信似的(可能是记错了),旗下免费SubCA有三个,Encyption365(近期发布)、UbiquiTLS(Sectigo CA)和CreazySSL(海外市场)。Encyption365之前是在loc进行了宣传,通过他们提供的宝塔的插件进行下单,官方也表示IP证书和通配符证书是符合CA的要求的,可以说是市场上唯一的免费IP SSL了吧。

至于AllinSSL是环洋的ECMP分销系统搭建的,实际上就是一家公司的产品,连通知邮件来源都一样,相比于Encryption365必须通过宝塔插件或者API下单,去AllinSSL自己上传CSR网页验证流程方便多了。AllinSSL里的CreazySSL设置了0.01的费用,由于和UbiquiTLS都是差不多的证书应该没必要去买。

唯一的缺点就是环洋的免费证书证书链要比一般亚信之类的SSL长一级,影响不大,相比于其便利性是可以忽略的。

相关平台:AllinSSL环智中诚


Buypass

特色:六个月有效期、ACME自动化、自有根证书、ECC

这家是纯种海外SSL商家里面提供的免费时长最长的一个,和亚信一样限制单域名;但是它可以通过ACME便捷地获取,即使你不熟悉ACME的操作,你也可以通过FreeSSL.org使用网页版操作(改版后无了),还是比较方便。

另外值得一提的是他家的OCSP使用的Akamai的CDN,国内加载速度比Sectigo的Stackpath强得多,在国内使用上也是没什么问题的。

相关平台:ACME、FreeSSL


Let’s Encrypt

特色:三个月有效期、ACME自动化、通配符、ECC

Let’s Encrypt大家应该都很熟悉了,有随意域名组合、签发简洁快速、支持泛域名等等优点;由于是基金会的非盈利项目,有非常多的服务商比如Vercel、Heroku等等平台均使用其自动签发的服务。

除了优点之外不得不提到他在大陆比较致命的缺点,它的OCSP服务器指向的的Akamai CNAME受到了污染导致其OCSP请求不可达,会使得Apple用户首次访问白屏数十秒才能因超时而默认信任证书。其次目前LE X3的根证书DST Root CA即将到期,LE也将于明年1月切换至自己在2016年签发的根证书进行分发,不再依赖与老牌CA的交叉授权。

但是LE在2016年的根显然太年轻了,相比DigiCert和Sectigo动辄十几年历史的根证书兼容性会受到很大挑战,比如安卓7以下设备均未内置LE自有的根且无后续更新支持,继续选择LE的证书也意味着对于这25%“落后”用户的淘汰。

相关平台:ACME、Let’s Encrypt


ZeroSSL

特色:三个月有效期、Sectigo根证书、ACME自动化、通配符、ECC

普通的海外土著商家,注册就可以申请。网站免费帐户只能申请3个最大3域名的DV证书,签发和吊销流程很顺畅,网站申请方面没什么亮点。

有大佬提到ZeroSSL可通过ACME签发ECC及通配符的证书,此处有待更新,详情页点击前往(感谢@Edison Jwa的补充)。

ACME可以参考:放弃Let’s Encrypt证书,全站更换ZeroSSL证书 – 饭饭’s Blog

相关平台:ZeroSSL


GoGetSSL

特色:三个月有效期、Sectigo根证书

也是普通的海外土著商家,曾经提供过免费的一年证书。注册就可以申请,免费帐户只能申请最大3域名的DV证书,签发和吊销流程很顺畅,证书本身也没什么亮点。

相关平台:GoGetSSL


二、OCSP

引发这次对不同证书的尝试一个重要方面原因就是OCSP。在你访问部署了某个证书的网站时,浏览器是通过请求证书内嵌的CA的OCSP地址来确定证书有效性,当OCSP不可及的时候浏览器需要在超时后才能放行,也就造成了数十秒的“白屏”。

Let’s Encrypt的OCSP地址使用的CDN指向的CNAME不明原因被污染了,影响主要是使用Apple全平台和IE的用户,其他平台Chrome及其衍生浏览器均默认均未开启OCSP功能;FireFox对于LE的证书也是不校验默认信任的,不过对于其他的证书就不是这样的策略了。

Root CA OCSP地址 CDN提供商 访问质量
DigiCert(Global) ocsp.digicert.com Verizon 正常
DigiCert(China) ocsp.dcocsp.cn 阿里云 非常好
Sectigo ocsp.sectigo.com Stackpath
Let’s Encrypt ocsp.int-x3.letsencrypt.org Akamai 阻断
Buypass ocsp.buypass.com Akamai 正常
GlobalSign ocsp.globalsign.com CF/Fastly/阿里云 非常好

国内这个特殊的政策条件下,世界主流的CDN都没办法设置边缘节点,所以在选择证书的时候有条件还是考虑一下OCSP在国内的适应性吧。


三、OCSP Stapling

当然前面提到OCSP不可及或者请求OCSP造成的延迟,这种也不是没有解决方案,OCSP Stapling就是因此而生的。我之前在配置的时候因为证书链没有配置全一直没生效,就写写NGINX的配置方法吧。

导出证书链

Chrome可以点击SSL的小锁打开证书详情,在证书路径除了我们的站点证书外证书链的多个证书即为我们所需要的。

双击要导出的证书,选择详细信息,点击复制到文件,选择Base64编码,一路下一步把证书链的证书全部导出。

把下载下来的证书按照SubCA在上、RootCA在下的顺序组合起来,直接用记事本或者NPP复制进去即可。

开启OCSP

开启OCSP只需要加三段代码,其中ssl_trusted_certificate指向你刚才导出的证书链:

如图加在证书配置处即可,如果是Let’s Encrypt的证书因为不校验证书链无需指定ssl_trusted_certificate,只加前两句即可。

加好之后可以去MySSL进行测试,一般而言OCSP是在触发了OCSP请求之后再访问才会生效,所以可以测两次再看是否有效。

最近有朋友说即使启用了OCSP Stapling苹果的Apple OCSP策略依然会去验证OCSP……不过配置一下总比不配置强吧,说不定以后这个策略就会改变了,毕竟这也是泄露用户访问信息的一个渠道。

定时任务刷新OCSP响应推荐参考饭饭大佬的博客:
Nginx开启OCSP以解决Let’s Encrypt证书被DNS污染访问缓慢 – 饭饭’s Blog


四、随便说说

经过这件事不得不承认国内激烈的互联网竞争催生了很多人性化的服务,也难怪Let’s Encrypt在公布初期一呼百应,海外的免费SSL市场很少见亚信和环洋这样的搅局者,在短暂的免费后剩下的都是限制重重的Trail。

最后就用上面的一张图作为总结,如果你需要长期使用的单域名证书,亚信和阿里的都是极好的选择,临时便捷Buypass也是很不错的;如果需要通配符的话更加推荐AllinSSL的,相对LE而言不仅根证书更大众化而且包含了对IP证书的支持。同时这两种证书的根证书DigiCert和Sectigo因为受众广泛,360的根证书计划已对其收录,在国内使用是没有什么后顾之忧的。

当然在最后还是得对亚信和环洋这两家公司表示感谢,放眼海外才知道这样的免费资源实在难得;其他的就不说了,在这里选择适合你的就是最好的。


*原创文章,转载请注明出处

转载原创文章请注明,转载自: Luminous' Home » 【杂谈】免费SSL证书那点事

  1. 非常详细,赞👍

  2. 亚洲诚信的证书貌似在linux 的 curl 和一些国产浏览器是不被信任的

  3. zerossl是不是不能注册了?https://app.zerossl.com/signup 这个注册页面,点【next step】没反应,我换了几个浏览器也没用,手机也不行,找其他地方的朋友帮忙,也不行。

    1. @loren ZeroSSL用了谷歌的reCAPTCHA,用油猴插件替换API地址或者直接挂个代理吧
  4. 环洋的连接貌似打不开啦 https://chat.trustocean.com/topic/index?id=1

    另外,最近又出现了一家一年免费单域名的商家:http://encryption365.cn/

    1. @terry 这个Encryption365就是环洋诚信的……
  5. 无论系从内容详尽的程度,还是从内容有效的程度来说,毫不夸张地说,贵站简直已成为信息海洋中的中心简称信息中心,

    1. @Wayne 感谢支持(*'▽'*)♪不敢当,个人网站内容其实还是比较少的……
  6. 环洋(准确的说是所有使用Sectigo根的品牌,包括ZeroSSL等)的证书链都是可以调整为3级链的。CA默认提供的是交叉签名到AAA根的4级证书链,这个链兼容性比较好,AAA根是2004年的老根证书。但只要删除证书链最上面的由AAA签名的USERTrust中间证书,系统就会自动选择以USERTrust为根证书的3级链。但代价是兼容性会有所降低,USERTrust根是2010年的新根证书,安卓5及以下系统会不兼容。

    1. @LaMP 对,为了兼容性考虑提供了AAA的交叉授权,之前国内代理racent做过详细的说明(网页链接)。多一级证书链带来的性能损失一般来说还是没什么影响,没必要删掉AAA的根≥﹏≤
      1. @Luminous 是的,一般的DV证书确实没必要改。但比较坑的是Sectigo对EV证书也默认提供了AAA交叉签名的证书链,而AAA根是没有被操作系统和浏览器信任EV OID的,导致很多用Sectigo EV证书的网站不显示公司名称,包括Sectigo自己的官网也是。。Racent他们网站就是删除了AAA签名的中间证书才能显示出EV效果。
        1. @LaMP 看起来Sectigo也不打算处理这样的问题了,反正现在浏览器都不显示EV公司名了……时间长的根还是不容易,不过USERTrust已经10年了,兼容性还是比ISRG即将拿的那个好很多
  7. Buypass单证书限制域名≤5
    Let’s Encrypt换了新的中间证书R3
    ZeroSSL随便写个邮箱acme.sh签发通配符
    acme.sh –register-account -m 邮箱地址 –server zerossl
    acme.sh –set-default-ca –server zerossl
    和LE差不多 优点:无速率限制 缺点:证书链多一级

    1. @Chuan Jianguo 感谢补充,后面有时间会对文章不准确的地方做一些修正
  8. 华为云也有DigiCert的免费证书

    1. @Tala 看了下确实有,藏的真深,感谢补充(*∩ω∩)
  9. 写得好详细哇,才知道FreeSSL不是唯一的选择。

    1. @小谈谈 233333,感谢大佬支持
  10. 我用acme.sh新申请的Let’s Encrypt RSA证书采用了新的中级证书“R3”,ocsp_url更换成了国内能正常访问的http://r3.o.lencr.org。但ECC证书依然在使用老的中级证书。参见:https://myssl.com/cert_decode.html?id=1D5E1A2AD5DCB8F28947A554E95069124C4D0BAA

    1. @xkww3n 12月2日更换的,正式进入过渡期,从明年一月到六月你可以自行选择ISRG和DST的根证书
  11. 将白嫖做到极致~

  12. 感谢大佬的整理

  13. 很认真的阅读了大佬的文章,ZeroSSL 部分似乎有点错误,首先他是可以签发通配符和 ecc的 而且三个条的限制仅限于 web ,他是支持 acme签发的,并且不像lets一样有每月签发的限制 i.yecdn.com/images/2020/12/01/479e8ba69ebcd611b2438a1c65c3ead4.png
    i.yecdn.com/images/2020/12/01/4bf472fb02a4d6814a9be1f8ab426e33.png

    1. @Edison Jwa 这样,怪不得之前告诉我这个的朋友说它可以通配符,但是他也没操作过,我在网站看了一下之后就再没试过了,后面试一试再做补充。非常感谢233333!
      1. @Luminous 可以参考这个 https://zerossl.com/letsencrypt-alternative/
        1. @Edison Jwa 非常感谢!
  14. 将白嫖做到极致~

  15. 将白嫖做到极致~