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/

Let‘s Encrypt 使用相关推荐

  1. .NET Core 常用加密和Hash工具NETCore.Encrypt

    前言 在日常开发过程中,不可避免的涉及到数据加密解密(Hash)操作,所以就有想法开发通用工具,NETCore.Encrypt就诞生了.目前NETCore.Encrypt只支持.NET Core ,工 ...

  2. 实现nginx上配置免费证书Let's Encrypt

    Let's Encrypt 的免费证书有效期为三个月,不过可以免费续期,写一个脚本定期更新即可. 准备一台nginx 服务器 ,将以下三个附件上传到你的nginx服务器. 1.下载脚本文件,wget ...

  3. 申请 Let's Encrypt 通配符 HTTPS 证书

    一.背景知识 1.1.什么是通配符证书 通配符证书,又叫泛域名证书,一张通配符的证书可以保护一个域名下同级子域名,使他们都变成 https 加密链接,不需要配置一个子域名再申请一个新证书了,而且不限制 ...

  4. let's encrypt部署免费泛域名证书

    环境说明 [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) [root@localhos ...

  5. Let's Encrypt 免费通配符 SSL 证书申请教程——但是也需要email,域名所有权等,如果是黑产用的话会这样用吗?会不会暴露自己身份???...

    Let's Encrypt 免费通配符 SSL 证书申请教程 from:https://blog.csdn.net/English0523/article/details/79608464 2018 ...

  6. 阿里云Ubuntu 14.04 + Nginx + let's encrypt 搭建https访问

    用云旺的做IM,ios端图片地址只能是https的才能显示,所以为服务器增加证书 Let's Encrypt是一个免费并且开源的CA,且已经获得Mozilla.微软等主要浏览器厂商的根授信 1. 下载 ...

  7. Let's Encrypt 免费SSL配置

    2019独角兽企业重金招聘Python工程师标准>>> 官方网址 https://letsencrypt.org/ UPDATE: [2018/10/26]如果创建证书时出现 Cli ...

  8. 【HTTPS】Let's Encrypt certbot renew

    背景: web应用 有IPv4和IPv6地址,但是未在同一台服务器上 使用 Let's Encrypt,当证书过期之后,执行certbot renew 时,报错了, 报错 please make su ...

  9. 使用Let`s encrypt 免费的https 证书

    在iOS上以前暂时屏蔽https使用http的接口,将在未来被苹果拒绝: 之前传苹果会在2017年1月1日强制要求支持https,但是现在苹果又延迟该计划了 https://developer.app ...

  10. ca服务器证书鉴定计划,Let’s Encrypt 项目计划自动化地提供免费的 CA 证书

    Let's Encrypt Mozilla.思科.Akamai.IdenTrust.EFF 和密歇根大学研究人员联合宣布了 Let's Encrypt CA 项目,计划为网站提供免费的基本 SSL 证 ...

最新文章

  1. 比特币现金支付接入日本便利店
  2. echo,printr,print_r之间的区别
  3. mysql主从复制、基于GTID的主从、半同步
  4. angularjs移除不必要的$watch
  5. Delphi中TFlowPanel实现滚动条效果
  6. java泛型程序设计——翻译泛型表达式+翻译泛型方法
  7. 前端学习(77):css中常见margin塌陷问题之解决办法
  8. python指定条件分类输出_python基础(二)条件判断、循环、格式化输出
  9. 量化交易系统 python btc_GitHub - crabboy/abu: 阿布量化交易系统(股票,期权,期货,比特币,机器学习) 基于python的开源量化交易,量化投资架构...
  10. GoDiagram可以画节点和连线的WinForms
  11. bodymovin导出没有html5,Bodymovin导出Json文件避坑指南
  12. java jdbc sqlerver_SQLServer2000的JDBC驱动
  13. VB.net小技巧——VB.net中的结构体和共用体
  14. 计算机硬盘根目录是什么,根目录是什么(d盘根目录是什么意思)
  15. 抽象代数之循环群的自同构群是循环群
  16. 一起读Apache ServiceComb
  17. 安装webpack出现“Refusing to install package with name webpack under a package”
  18. 积分和微分电路分析及仿真
  19. APP被苹果App Store拒绝的N个原因
  20. C语言循环链表(不带头结点)解约瑟夫问题的一种变形

热门文章

  1. 三七互娱《斗罗大陆:魂师对决》上线,Network Kit助力玩家即刻畅玩
  2. 2021 1月17周记
  3. Lua的函数参数为table时奇特现象
  4. 第四节 Go数据结构之栈
  5. 从奴隶社会到资本主义社会的转变
  6. 视频教程-Appium移动自动化测试框架-软件测试
  7. Ant Design Pro v5 正式版从零开始实战 Refresh Token 视频教程(13 个视频)
  8. C# 主画面开发 - 窗口停靠
  9. 线下餐饮店的流量破局之法,利用抖音导流转化丨国仁网络
  10. 目前工作中的一些问题