我有一个网站在 Apache 端口 80 HTTP(在临时子域上)上成功运行。
我正在按照本教程使用 LetsEncrypt 和 certbot 在 Apache2、Ubuntu 上设置 SSL 证书:
已执行以下步骤:
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-apache
sudo certbot --apache -d example.com -d www.example.com
最新一步失败,并出现
未经授权
消息,可能是因为该网站位于代理后面和/或因为示例.com尚未上线(DNS A 和 CNAME 记录尚未设置,因为与旧主机相比应该有一个流畅的变化,并且网站已经上线)。
因此我必须手动设置证书前DNS 记录已设置。我发现 certbot 有一个--manual
选项:https://certbot.eff.org/docs/using.html#manual
我也有.证书申请示例.com来自 LetsEncrypt 是否更有用?
然而,这是我陷入困境的地方,我不知道如何正确进行(是的,我对服务器设置还很陌生)。
您能告诉我下一步该怎么做才能以手动方式正确设置此 SSL 证书吗?
答案1
Certbot 有三种方式来向 letsencrypt 验证您对域的所有权。其中两种(http
和tls-sni
)打开端口并提供特定内容(http
)或证书(tls-sni
);这两种方式对您来说都不适用,因为域(如您所说)不指向您正在运行的主机certbot
。
第三种方式(dns
)非常适合您的情况。引用certbot
文档:
使用 dns 质询时,certbot 会要求您在域名下放置一个包含特定内容的 TXT DNS 记录,该记录由您要为其颁发证书的主机名组成,并以 _acme-challenge 开头。例如,对于域 example.com,区域文件条目将如下所示:
_acme-challenge.example.com.300 IN TXT“gfj9Xq...Rg85nM”
这就是你需要做的。运行
certbot certonly --manual --preferred-challenges dns -d example.com -d www.example.com
此命令应执行以下操作:
- 要求您创建 DNS TXT 记录
- 创建 DNS TXT 记录后立即获取证书
- 将证书放入
/etc/letsencrypt
最后你必须将证书配置添加到您的网络服务器。