HTTPS(二)证书CA机构相关内容

AI 摘要: Let's Encrypt是一个非盈利性证书认证机构,提供免费的传输层安全性(TLS)加密的X.509证书。证书有效期为90天,可以随时续订。它通过自动化流程来简化证书的创建、验证、签名、安装和续订。Let's Encrypt是一个全球证书颁发机构,提供Domain Validation(DV)证书,并不提供Organization Validation(OV)和Extended Validation(EV)证书。它支持多域名证书和通配符证书。每个证书最多不超过100个子域。

数字证书认证机构(英语:Certificate Authority,缩写为 CA),也称为电子商务认证中心、电子商务认证授权机构,是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。

具有多个名称的证书通常称为 SAN 证书,有时称为 UCC 证书。

1. Let’s Encrypt

Let’s Encrypt 是一个非盈利性 认证机构通过运行互联网安全研究小组(ISRG)提供 X.509 证书的传输层安全性不收取任何费用(TLS)加密。

证书有效期为 90 天,在此期间可以随时续订。该优惠伴随着一个自动化流程,旨在克服安全网站的手动创建,验证,签名,安装和续订证书。

1.1. 相关概念

  • ACME 协议:ACME 全称是 Automated Certificate Management Environment,直译过来是自动化证书管理环境的意思,Let’s Encrypt 的证书签发过程使用的就是 ACME 协议
  • Let’s Encrypt 证书是如何运行的:
    • 通过在 Web 服务器上运行证书管理代理(ACME 客户端)来完成的。
    • 参见:https://letsencrypt.org/how-it-works/
  • 证书管理 example.com 的过程:
    • 域名验证
    • 证书颁发和撤销

1.2. 相关问题

  • Let’s Encrypt 提供哪些服务
    • Let’s Encrypt 是一个全局证书颁发机构(CA) ,让世界各地的人们和组织获取,更新和管理 SSL / TLS 证书。
    • Let’s Encrypt 提供 Domain Validation (DV) 证书,不提供 Organization Validation (OV)以及 Extended Validation (EV)
  • Let’s Encrypt 证书的生命周期是多少?它们有效期有多长?
    • 证书有效期为 90 天, 建议您每 60 天自动续订一次证书
  • 浏览器支持情况:https://letsencrypt.org/docs/certificate-compatibility/
  • Let’EnCrypt 不会保存证书私钥
  • 不支持OV(组织证书)或EV(扩展证书)
  • 支持多域名证书,相同的证书可以使用主题备用名称(SAN)机制包含多个不同的名称。
  • 自动续订的问题:
    • 有大量的 ACME 客户可用,https://letsencrypt.org/docs/client-options/
    • 我们后续会基于 acme.sh 这个开源的项目来设定自动证书认证和签发的问题
  • 支持签发通配符证书:
    • 通配符证书必须通过ACMEv2或者使用DNS-01查询
  • 签发限制
    • 每周 20 个注册域名证书,比如 archstat.com、tkstorm.com
    • 每个证书最多不超过 100 个子域(具有多个名称的证书通常称为 SAN 证书,有时称为 UCC 证书)
    • 每周 5 份证书的重复证书限制,即如果您为名称[ www.example.com,example.com] 申请了证书,则可以在一周内为[ www.example.com,example.com] 申请另外四个证书。如果您通过添加[ blog.example.com] 更改了名称集,则可以申请其他证书
    • 注册域名限制的证书续订豁免(如果发布请求包含与先前颁发的证书完全相同的主机名集,则将其视为续订)
    • 每个帐户,每个主机名,每小时 5 次失败的失败验证限制
  • 灰度环境:
    • 灰度环境支撑更多的签发次数
    • 参见:https://acme-staging.api.letsencrypt.org/directory

1.3. 针对 https 中的 ca 证书不受信问题

1
2
3
4
5
6
7
 # curl -v https://tkstorm.com
 ....
 curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
 ....

原因:由 Let’s encrypt 的签发的证书未在 CentOS7 的受信根证书

处理方式:将 Let’s Encrypt 的根 CA 证书,添加到系统的受信任的 CA 证书中:

1
2
3
4
5
// 用root账号,直接下载Let’sEncrypt的根证书到目录,并更新
wget https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem.txt -O /etc/pki/ca-trust/source/anchors/lets-encrypt-x3-cross-signed.pem

// 更新ca证书
update-ca-trust

2. 参考

  • Let’s Encrypt 官档: https://letsencrypt.org/
  • Let’s Encrypt 客户端支持情况:https://letsencrypt.org/docs/client-options/
  • Let’s Encrypt 证书签发过程:https://letsencrypt.org/how-it-works/
  • Let’s Encrypt 证书支持情况:https://letsencrypt.org/docs/certificate-compatibility/