来自Certbot webroot 插件的文档
webroot 插件通过为您请求的每个域创建一个临时文件来工作
${webroot-path}/.well-known/acme-challenge。 然后让我们加密验证服务器发出 HTTP 请求,以验证每个请求域的 DNS 是否解析为运行 certbot 的服务器。
在私人使用的家庭服务器上,我禁用了端口 80,即路由器中没有启用端口转发。我无意打开那个端口。
如何告诉 certbot 验证服务器不应发出 HTTP 请求,而是发出 HTTPS(端口 443)请求来验证域的所有权?
验证服务器甚至不需要验证主服务器的证书,因为它默认已经使用 HTTP。我可能有一个自签名证书,或者需要续订的证书,但这应该无关紧要。
目前我处于需要启用端口 80 转发以及其上的服务器以创建/更新证书的情况。这不允许我使用 cronjob 来更新证书。好吧,只要有足够的工作就可以了,但是我已经有一台服务器在监听 443,它也可以完成这项工作。
我想在 443 以外的不同端口上为网络服务器设置 certbot。运行时出现以下错误
certbot --apache -d <sub>.<domain>.<ext>
Run Code Online (Sandbox Code Playgroud)
授权程序失败。sub.domain.ext (tls-sni-01): urn:acme:error:connection :: 服务器无法连接到客户端以验证域 :: 无法连接到 external_ip:443 以进行 TLS-SNI-01 质询
在这个错误之后,我阅读了手册页,在那里我发现了这个:
--tls-sni-01-port TLS_SNI_01_PORT 执行 tls-sni-01 质询的端口号。测试模式下的 Boulder 默认为 5001。(默认值:443)
然后我尝试了以下方法来纠正这个错误:
certbot --apache --tls-sni-01-port 14831 -d <sub>.<domain>.<ext>
Run Code Online (Sandbox Code Playgroud)
添加 tls-sni-01-port 后,我得到了同样的错误。
是否可以使用不同的端口安装证书,或者我做错了什么?
我使用独立方法为多个域创建了多个 SSL 证书。我只对证书感兴趣,没有服务器集成。
他们现在正在更新。所以,我跑了:
certbot -d example.com --manual --preferred-challenges dns certonly
Run Code Online (Sandbox Code Playgroud)
并遵循每个域的说明(为每个域添加所需的 DNS 条目)。这样,我不必停止服务器并获得我的新证书。
我对这一切的(模糊)理解是,目前没有使用 DNS 质询自动更新证书的方法。或者您可能无法为“手动”方法自动更新证书?
无论如何,我写了这个脚本:
#!/bin/bash
for i in renewal/*;do
n=${i:8:-5};
echo $n;
# echo "\n" | certbot --text --agree-tos -d $n --manual --preferred-challenges dns --expand --renew-by-default --manual-public-ip-logging-ok certonly;
done
Run Code Online (Sandbox Code Playgroud)
此时,在renewal目录中所有域都有:
验证器 = 手册
和:
pref_challs = dns-01
Run Code Online (Sandbox Code Playgroud)
问题:
现在......当我运行“certbotrenew”时,它会在不使用我的脚本的情况下自动更新所有这些吗?
如何开始使用 DNS 质询实际创建新证书?
我拥有一个使用 Let's Encrypt 证书的网站。它不在 Cloudflare 后面,而是托管在 OVH,我接受来自它的直接流量。
现在,我设置了一个 apache2 Web 服务器并使用 certbot 自动生成证书。这里的问题是,当我在 Firefox 上查看证书信息时,我可以在页面底部看到它包含对“Cloudflare Nimbus2023”的引用,尽管我没有使用他们的服务。
下面所附的图片是它所显示的......
(由于某种原因,它不允许我附上图片)
谁能向我解释一下这是什么?Cloudflare 在这里访问什么?
我正在运行Let's Encrypt 的SSL 证书。我已经在运行 Apache 的 Ubuntu 机器上安装了它们。设置工作正常,我可以启动网站,看到绿色挂锁,甚至在 SSL Labs 上获得了 A+。
问题是,当我执行apachectl configtest 时,服务器会返回一个找不到文件的错误:
SSLCertificateFile: file '/etc/letsencrypt/live/www.example.com/fullchain.pem' not exist or is empty.
Run Code Online (Sandbox Code Playgroud)
但sudo service apache2 restart工作得很好。
我在Let's Encrypt Community遇到了这个问题,但问题尚未解决。
sudo cat /etc/letsencrypt/live/www.example.com/fullchain.pem 有效,返回有效的证书详细信息。
sudo x509 -text -noout -in /etc/letsencrypt/live/www.example.com/fullchain.pem
Run Code Online (Sandbox Code Playgroud)
不起作用并返回以下错误:
Error opening Certificate /etc/letsencrypt/live/www.example.com/fullchain.pem
139774254929568:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen('/etc/letsencrypt/live/www.example.com/fullchain.pem.','r')
139774254929568:error:2007402:BIO routines:FILE_CTRL:system lib:bss_file.c:400:
ubable to load certificate
Run Code Online (Sandbox Code Playgroud)
关于为什么我在apachectl configtest和openssl上遇到错误的任何想法?
谢谢你们!
给出这个设置:一个 Nginx 正在提供一个 .well-known 文件夹,监听服务器上的端口 80/443,以将 chellange 交换为 Letsencrypt。证书创建正确,可以在提到的 Nginx 中使用。
尝试通过 coturn 使用证书时:
listening-port=3478
tls-listening-port=5349
alt-listening-port=3479
alt-tls-listening-port=5350
…
cert=/path/to/fullchain.pem
pkey=/path/to/privkey.pem
Run Code Online (Sandbox Code Playgroud)
现在尝试启动 coturn 时,它似乎没有找到/无法从日志加载证书:
WARNING: cannot start TLS and DTLS listeners because private key file is not set properly
WARNING: cannot find private key file: /path/to/privkey.pem
WARNING: cannot start TLS and DTLS listeners because certificate file is not set properly
WARNING: cannot find certificate file: /path/to/fullchain.pem
Run Code Online (Sandbox Code Playgroud)
现在我想知道使用 letencrypt SSL 链设置 coturn 的正确方法是什么。
我有以下证书:
# certbot certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Found the following certs:
Certificate Name: domain.example
Domains: domain.example imap.domain.example mail.domain.example pop.domain.example smtp.domain.example www.domain.example
Expiry Date: 2019-09-09 03:34:20+00:00 (VALID: 62 days)
Certificate Path: /etc/letsencrypt/live/domain.example/fullchain.pem
Private Key Path: /etc/letsencrypt/live/domain.example/privkey.pem
Run Code Online (Sandbox Code Playgroud)
现在我想做的是从证书中删除domain.example和,因为 Web 服务器已移动到另一个实例。www.domain.example事实上,DNS 条目已更改意味着,如果domain.example和www.domain.example仍然是证书的一部分,则续订过程将会失败,因为 DNS 条目现在指向另一个 IP。
如何从 Let's Encrypt 证书中删除某些主机名,而不删除证书并创建新证书?
我在DigitalOcean上配置我的服务器,虽然我从 ssllabs 获得了 A+ 评级,
https://www.ssllabs.com/ssltest/analyze.html?d=zandu.biz
当我连接到我的网站https://www.zandu.biz或https://zandu.biz 时,我在 Chrome 中收到不安全通知。
我该如何解决这个问题?
我想在(将)由 Let's Encrypt: 签名的 SSL 证书中包含两个通配符*.*.thost3.de。该证书是否会与匹配该规则的任何主机名(例如example.example.thost3.de,hello.world.thost3.de)相匹配,并且 Let's Encrypt 是否可以接受他们签署的证书中存在此类通配符?
我有一台运行 2 个不同 Web 服务器(Apache 和 Nginx)的服务器。Apache 服务器负责处理定向到 Wordpress 站点的所有流量,而 Nginx 服务器则为我的 Python API 和 React Web App 提供服务。
由于与 Apache 的端口冲突,我必须将 API 设置为在端口 88 上运行,将 React 应用程序设置为在端口 90 上运行。我用这种方式进行了测试,结果成功了。所有请求都会转发到 443,所以我认为不安全端口是什么并不重要。
当我最终运行命令来添加证书时:
sudo certbot --nginx -d a.domain.com
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误。经过进一步检查,我发现它试图在端口 80 而不是 88 上打开域。我做了一些研究并找到了规则--http-01-port并将其设置为 88,但它再次给了我同样的错误:
sudo certbot --nginx --http-01-port 88 -d a.domain.com
Run Code Online (Sandbox Code Playgroud)
经过多次尝试后,我担心 certbot 可能很快就会因为怀疑垃圾邮件而阻止我几个小时或几天,而我已经没有可能的解决方案了。
以前有人处理过这个吗?你是怎么解决这个问题的?