我有一个私人 Apache 服务器,只能通过我的 LAN 上的 443 端口访问,并且拥有 StartSSL 证书。
自 Firefox 51 发布以来,我无法再连接到它,因为StartSSL 根证书已从信任库中删除。
我考虑过迁移到 Let's Encrypt,但这似乎需要面向公众的 HTTP 服务器。我的情况可以使用 Let's Encrypt 吗?
如果可能的话,我宁愿避免支付 SSL 证书的费用。
答案1
如果您控制域的 DNS,那么您可以使用 dns-01 质询方法通过创建 TXT 记录来证明所有权。
这可以手动或自动完成。我认为现在甚至官方的 certbot 客户端也支持 dns-01。
快速谷歌搜索向我展示了一系列使用各种脚本和客户端的教程,因此我不会在这里重复所有这些教程。这个专门实现内联网证书的自动化。
答案2
certbot 客户端能够进行手动 DNS 质询。此问题中的(目前第二受欢迎的)答案如何使用 Let's Encrypt DNS 挑战验证?有所有的细节,而且我刚刚测试过它可以正常工作。
基本上,您运行此命令并按照说明进行操作:
certbot -d site.your.dom.ain --manual --preferred-challenges dns certonly
答案3
你提到你正在使用 Apache,但是如果你不受它的约束,那么有一个非常简单的路径可以使用Caddy服务器。
您只需定义Caddyfile
以下内容:
example.com
tls {
dns cloudflare
}
在配置中提及您正在使用的 DNS 提供商,并通过环境变量配置您的 API 密钥。从受支持的提供商列表中选择文档。
这就是所需的全部内容。首次启动时的输出将类似于:
Activating privacy features... 2019/10/21 13:36:48 [INFO][cache:0xc0001c8190] Started certificate maintenance routine
[INFO][cache:0xc000092730] Started certificate maintenance routine
2019/10/21 13:24:49 [INFO][example.com] Obtain certificate
2019/10/21 13:24:49 [INFO] [example.com] acme: Obtaining bundled SAN certificate
2019/10/21 13:24:50 [INFO] [example.com] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz-v3/876706285
2019/10/21 13:24:50 [INFO] [example.com] acme: Could not find solver for: tls-alpn-01
2019/10/21 13:24:50 [INFO] [example.com] acme: Could not find solver for: http-01
2019/10/21 13:24:50 [INFO] [example.com] acme: use dns-01 solver
2019/10/21 13:24:50 [INFO] [example.com] acme: Preparing to solve DNS-01
2019/10/21 13:24:50 [INFO] cloudflare: new record for example.com, ID XXX
2019/10/21 13:24:50 [INFO] [example.com] acme: Trying to solve DNS-01
2019/10/21 13:24:50 [INFO] [example.com] acme: Checking DNS record propagation using [127.0.0.11:53]
2019/10/21 13:24:50 [INFO] Wait for propagation [timeout: 2m0s, interval: 2s]
2019/10/21 13:24:50 [INFO] [example.com] acme: Waiting for DNS record propagation.
2019/10/21 13:24:52 [INFO] [example.com] acme: Waiting for DNS record propagation.
2019/10/21 13:24:55 [INFO] [example.com] The server validated our request
2019/10/21 13:24:55 [INFO] [example.com] acme: Cleaning DNS-01 challenge
2019/10/21 13:24:55 [INFO] [example.com] acme: Validations succeeded; requesting certificates
2019/10/21 13:24:56 [INFO] [example.com] Server responded with a certificate.
done.
Serving HTTPS on port 443
https://example.com
2019/10/21 13:36:48 [INFO] Serving https://example.com
Serving HTTP on port 80
http://example.com
2019/10/21 13:36:48 [INFO] Serving http://example.com