我希望澄清一些关于在内部网站/应用程序中使用 Let's Encrypt 的疑惑。我在其他地方找不到此信息。
我想使用 Let's Encrypt 与 Certbot 配对来允许在应用程序上使用 SSL。
问题:
- Let's Encrypt 或 Certbot 是否需要互联网访问才能执行其工作的任何部分?即使互联网访问中断,应用程序也需要能够正常运行。据我所知,唯一需要互联网连接的部分是在 90 天期限即将结束时生成新证书。
- Let's Encrypt 需要有效域名。根据其网站,“适用于任何使用域名的服务器,如 Web 服务器、邮件服务器等”。我不太清楚拥有有效域名意味着什么。如果我的服务器上已经托管了其他 Web 应用程序,那么我使用 Apache 设置的任何域名都算数吗?还是我需要购买域名?
- 在上一个问题中,我提到其他应用程序将运行在此服务器上。这些应用程序不需要 SSL。如果我在服务器上设置 Let's Encrypt 和 Certbot,是否意味着这些应用程序可以使用 SSL,还是特定于用于设置的域名(站点)?如果单独的应用程序使用 SSL,这些其他应用程序是否需要修改?
- 假设我想获得一个根证书,但我不想将其与 Certbot 一起使用,而是想创建并使用一组中间密钥。这可能吗?每次我们创建新的根密钥时,这些中间密钥是否都需要更改?
如果我的问题有误,我深表歉意,我对这类事情的了解非常有限。话虽如此,甚至可能有更好的选择来实现我的需求,所以我愿意听取建议。我选择 Let's Encrypt 而不是自签名证书,因为使用此解决方案,我不需要向需要访问的每台客户端计算机添加 CA。
答案1
Let's Encrypt 需要互联网连接,但
联邦军运行它的 ISRG。Certbot(在您的计算机上运行)与 Let's Encrypt 通信以颁发和更新证书,并且需要您的计算机的连接。有效域名(就 Let's Encrypt 而言)是您设置的可由全球 DNS 基础设施解析的域名 - 实际上,这意味着使用购买的域名或与购买的域名相关的子域名(尽管可以从一些鲜为人知的注册机构(如 www.tk)获取免费域名)
应用程序需要配置才能使用 Let's Encrypt 密钥。Certbot 所做的就是 (a) 拥有一组几乎所有浏览器都接受的密钥,以及 (b) 在检查密钥的所有者是否也能控制签名密钥的 DNS 后对密钥进行签名。 虽然 Certbot 可以与 Apache/NGINX 一起使用,并且操作很容易,但不需要运行任何软件。 类似地,Certbot 的输出(如果需要,还可以输出可选的配置文件,但绝不是强制性的)是签名的公钥。此私钥以及 Let's Encrypt 通常为您生成的私钥(以及任何中间密钥)可供您使用的任何可以使用 SSL、将 Let's Encrypt 识别为 CA 并识别文件格式的软件使用。这需要在软件中进行配置。
您的问题毫无意义 - 如果您有根证书,则无需使用 Certbot。您可以使用 OpenSSL 库创建自己的 CA 基础架构,如果您想简化此过程,可以使用 easy-rsa 等 pki 工具。Certbot 不是注册表,也不是 SSL 库,它是一个脚本,用于以符合标准的方式验证域名所有权,并管理 Let's Encrypt 提供的证书。如果您要设置自己的 CA(证书颁发机构 - 根证书就是如此),它就没用了。
答案2
- 是的,执行创建新证书所涉及的任何挑战,就是这样。
- “有效域名”只是意味着“不是 IP 地址”。与大多数颁发者一样,Let's Encrypt 不会使用 IP 地址作为证书的主题;它必须是域名。
- Certbot 所做的就是为它在 apache/nginx 配置中看到的任何域名创建证书。您可以使用 apache/nginx 配置来启用或不启用 SSL,或者指向任何其他证书。Certbot 将不是强制您的服务器启用 SSL 或强制它使用自己的证书。但它可以在安装程序期间(可选)为您写入配置。
- 如果您有私钥和可选密码,您可以让任何证书充当中间证书。