AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1031317
Accepted
Andreas
Andreas
Asked: 2020-08-25 11:16:55 +0800 CST2020-08-25 11:16:55 +0800 CST 2020-08-25 11:16:55 +0800 CST

Let's Encrypt 如何通过不安全的 http 验证身份?

  • 772

我刚开始使用 Let's Encrypt。http-01-challenge 很简单:

  • 让网络服务器响应http://example.com
  • 向 Let's Encrypt 询问质询文件
  • 在http://example.com/.well-known/acme-challenge下提供文件
  • 接收 example.com 的 TLS 证书

奇迹般有效。但是他们如何使用不安全的 http 连接确保我真的是 example.com 的所有者?

我的数据中心(或我的 ISP)中的某些管理员不能请求证书并拦截 http 请求,让我们加密发送以检查服务器的身份吗?

lets-encrypt
  • 2 2 个回答
  • 4227 Views

2 个回答

  • Voted
  1. Best Answer
    Håkan Lindqvist
    2020-08-25T11:43:08+08:002020-08-25T11:43:08+08:00

    事实上,对于 HTTP-01 挑战,对于中间人攻击没有万无一失的保护措施。
    可以拦截 Let's Encrypt 验证节点和您的服务器之间的流量的人可以通过挑战并获得颁发的证书。如果他们能够实施 BGP 诡计,他们可能甚至不一定处于正常意义上的中间。
    这适用于 HTTP-01 质询,对于未签名域也适用于 DNS-01 质询。

    值得注意的是,这个问题并不是 Lets Encrypt 独有的,传统 CA 对 DV 证书的验证普遍存在同样的问题;它们通常提供 HTTP、DNS 和电子邮件验证选项,所有这些都容易受到 MITM 攻击。

    Let's Encrypt为缓解该问题所做的工作是从不同数据中心的多个测试节点运行每次验证,要求所有测试结果一致才能颁发证书。(我怀疑这使他们比大多数传统 CA 更不容易受到这种类型的滥用。)
    这至少减少了可能处于“中间”的人的范围,因为“中间”的大部分内容会有所不同。来自不同的测试节点。

    这完全是关于 Let's Encrypt(以及一般的 CA)自动域验证的默认行为,但是域所有者已经获得了一些额外的控制权,要求公共 CA 必须检查CAA记录。

    为了实际控制,域所有者可以采取以下步骤:

    1. DNSSEC-签署区域以确保CAA数据不被篡改
      (在 DNS-01 的情况下也保护挑战本身)
    2. 添加一条或多CAA条记录以限制证书的颁发
      (特别CAA是那些不仅命名允许颁发的 CA,而且还包括允许使用该 CA 的帐户的记录)

    记录看起来像CAA这样:

    example.com. IN CAA 0 issue "letsencrypt.org; accounturi=https://acme-v02.api.letsencrypt.org/acme/acct/12346789"
    

    这个问题大大减少了,因为冒名顶替者不能一开始就轻易发起挑战。

    特别注意数据中的accounturi参数CAA,这是使策略特定于具有指定 CA 的域所有者帐户的原因。
    仅指定 CA 而不是帐户的CAA记录虽然有效,但帮助有限,因为这样的策略仍然允许该 CA 的任何其他客户请求颁发证书。

    • 41
  2. John Mahowald
    2020-08-25T12:48:51+08:002020-08-25T12:48:51+08:00

    获得 HTTP-01 挑战时使用 http 的理由在规范中:

    由于许多 Web 服务器以一种微妙且不直观的方式将默认的 HTTPS 虚拟主机分配给特定的低权限租户用户,因此必须通过 HTTP 而不是 HTTPS 来完成挑战。

    此挑战与 ACME 协议消息不同。该规范要求 https。ACME 还对其签名消息具有完整性和重放保护。即使流量被捕获,也不仅仅是未加密的挑战。当然,它存在一些风险,但是更好的域验证程序的替代方法是什么?


    监控未授权证书的更完整方法可能涉及证书透明度。在 CT 日志中搜索或设置警报以查找您的姓名。签发 CA、序列号和日期应该都很熟悉。

    • 9

相关问题

  • 为具有分布式流量的多个 Apache 服务器使用 Lets Encrypt SSL

  • 我是否需要在 LAMP 中为 HTTPS 网站配置端口 80?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve