Let‘s Encrypt 使用

1 关于Let’s Encrypt

Let’s Encrypt是一个非盈利的自动证书颁发机构(CA),我们可以免费的从Let’s Encrypt获取自己网站域名的证书,只需要在我们的web主机上运行使用ACME协议的软件来获取Let’s Encrypt证书。

2 工作原理

证书颁发主要分为两步,第一步就是域名认证,证明客户端对这个域名有控制权,不然谁都可以更改你的证书,那就乱套了。然后客户端就可以进行申请、续期以及吊销证书。

其中域名认证有两种方式:

  • 在你的域名下的已知URI下放置一个HTTP资源
  • 在你的域名下配置DNS记录

3 域名认证方式

3.1 HTTP-01 验证

Let’s Encrypt向ACME客户端提供一个令牌,ACME客户端需要在指定路径http://<your_domain>/.well-known/acme-challenge/<TOKEN>上放置指定文件。该文件包含令牌以及帐户密钥的指纹,文件准备就绪后Let’s Encrypt会尝试获取它,获取成功则验证被视为成功,就可以继续申请颁发证书。

HTTP-01验证最多接受10次重定向,只接受目标为“http:”或“https:”且端口为 80 或 443 的重定向。不接受目标为IP地址的重定向。 当被重定向到 HTTPS 链接时,不会验证证书是否有效(因为验证的目的是申请有效证书,所以它可能会遇到自签名或过期的证书)。

优点:

容易自动化,不需要关于域名配置的额外知识
支持为CNAME的域名颁发证书
适用于现成的Web服务器

缺点:

该验证方式依赖80端口
此验证方式不支持颁发通配符证书
域名下有多个Web服务器时,必须确保该文件在所有服务器上都存在

3.2 DNS-01 验证

此验证方式要求客户端在该域名下的 TXT 记录中设定特定值来证明你对该域名DNS系统的控制。Let’s Encrypt为ACME客户端提供令牌后,客户端根据令牌和帐户密钥创建TXT记录,并将该记录应用在 _acme-challenge.<YOUR_DOMAIN> 。 然后Let’s Encrypt就会向DNS系统查询该记录,如果查询到匹配项,则表示验证成功。

此时只有在DNS提供商有自动更新的API时,这种DNS-01验证方式才有意义,比如使用云厂商的DNS服务,route53。

因为要将DNS API凭据放在Web服务器上,因此会增加该服务器被黑客攻击的风险。最好是使用权限范围受限的API凭据,或在单独的服务器上执行DNS验证并自动将证书复制到Web服务器上。

优点:

此验证方式支持颁发通配符证书
有多个Web服务器时不需要其他额外配

缺点:

在Web服务器上保留API凭据存在一定风险
要求DNS提供商能自动更新DNS记录
DNS提供商可能无法保证DNS记录更新时间

4 注意事项

4.1 证书有效期

通过Let’s Encrypt申请的证书有效期是90天,因此最好是通过自动化方式对证书续期。

4.2 速率限制

证书的申请有速率限制,可以先在测试环境测试后再切到生产环境,

  • 测试环境:https://acme-staging-v02.api.letsencrypt.org/directory

    每个注册域名允许颁发的证书数量限制为每周 30000 张。
    重复证书限制为每周 30000 张。
    每账号、每主机名、每小时允许 60 次验证失败。
    每个 IP 地址注册账户数量限制为每个 IP 每 3 小时允许注册 50 个账户。
    对于 ACME v2,新订单限制为每个帐户每 3 小时 1500 个。
    
  • 生产环境:https://acme-v02.api.letsencrypt.org/directory

    每个注册域名允许颁发的证书数量限制为每周 50 张。
    重复证书限制为每周 5 张。
    每账号、每主机名、每小时允许 5 次验证失败。
    每个 IP 地址注册账户数量限制为每个 IP 每 3 小时允许注册 10 个账户。
    对于 ACME v2,新订单限制为每个帐户每 3 小时 300 个。
    

参考文档:

  1. https://letsencrypt.org/how-it-works/
  2. https://letsencrypt.org/docs/challenge-types/
  3. https://letsencrypt.org/docs/rate-limits/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值