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

数字证书认证机构(英语: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证书不受信问题

 # 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证书中:

// 用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/