几个月前我设置了一个新服务器,运行 Ubuntu 18.04 LTS。我成功安装了 certbot 并使用 cloudflare DNS 插件创建了我的证书。
现在是更新的时候了,但是当我运行certbot renew(或其他各种 certbot 命令)时,我收到以下错误
# certbot renew
/usr/local/lib/python2.7/dist-packages/cryptography/__init__.py:39: CryptographyDeprecationWarning: Python 2 is no longer supported by the Python core team. Support for it is now deprecated in cryptography, and will be removed in a future release.
CryptographyDeprecationWarning,
Traceback (most recent call last):
File "/usr/local/bin/certbot", line 7, in <module>
from certbot.main import main
File "/usr/local/lib/python2.7/dist-packages/certbot/main.py", line 2, in <module>
from certbot._internal import main as internal_main
File "/usr/local/lib/python2.7/dist-packages/certbot/_internal/main.py", line 21, in …Run Code Online (Sandbox Code Playgroud) 我有以下设置:
现在,一旦我在默认服务器上启用以下 .conf,我配置的所有顶级域都会收到 SSL_ERROR_RX_RECORD_TOO_LONG 错误。如果我禁用此配置,一切都会按预期工作。
因为这个事实,我确信 apache 侦听正确的端口、正确的 IP,并且 Letsencrypt/certbot 已正确设置。
<VirtualHost _default_:443>
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
Require all denied
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
将此更改为
<VirtualHost _default_:443>
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
Require all granted
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
并没有解决问题。
apache2ctl -S
Run Code Online (Sandbox Code Playgroud)
显示了预期结果,001-default-ssl.conf 和 001-default.conf 是端口 80 和端口 443 的默认值。
openssl s_client -connect workingdomain.tld:443
Run Code Online (Sandbox Code Playgroud)
印刷:
已连接(00000003)
139991513372312:错误:140770FC:SSL例程:SSL23_GET_SERVER_HELLO:未知协议:s23_clnt.c:794:
---
没有可用的对等证书
---
未发送客户端证书 CA 名称
---
SSL握手已读取7个字节并写入305个字节
---
新,(无),密码是(无)
不支持安全重新协商
压缩:无
扩展:无
未协商 ALPN
SSL 会话:
协议:TLSv1.2
密码:0000
会话 ID:
会话 … 我有一个经过良好测试的 bash 脚本,直到几周前它都运行良好。
似乎 certbot 挑战现在默认为 http 而不是 https。我想不通原因。
echo 'rsa-key-size = 2048
renew-hook = /usr/sbin/ipsec reload && /usr/sbin/ipsec secrets
' > /etc/letsencrypt/cli.ini
certbot certonly --non-interactive --agree-tos --email $EMAIL --standalone -d $VPNHOST
Run Code Online (Sandbox Code Playgroud)
防火墙设置:
Firewall stopped and disabled on system startup
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all -- anywhere anywhere state NEW recent: UPDATE seconds: 60 hit_count: 12 name: DEFAULT side: source mask: 255.255.255.255
all -- anywhere anywhere state NEW recent: SET name: DEFAULT side: source …Run Code Online (Sandbox Code Playgroud) 嗨,这一定是一个基本问题,但我还没有看到有关 cerbot 考虑的答案(如果有任何考虑的话)。如何让 https www 重定向到非 www 而不是超时?
我网站的https www版本超时而不是重定向到非 www,而所有其他版本(http 和 https 非 www)工作正常。
最好我想要未来的证明,以便我可以通过 certbot 更新证书,而无需事后手动更改 nginx 配置。
nginx 服务器配置如下所示:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name www.mydomain.com mydomain.com;
listen 443 ssl; # managed by Certbot
ssl_certificate <path_to_cert> # managed by Certbot
ssl_certificate_key <path_to_key>; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam <path_to_this>
if ($scheme != "https") {
return 301 https://$host$request_uri;
} # managed by Certbot
}
Run Code Online (Sandbox Code Playgroud) 我有一个亚马逊 EC2 盒子。我已经在上面安装了 Apache、MariaDb 和 PHP。
除此之外,我想在 EC2 上托管几个 WordPress 网站。
如何在 Amazon Linux 上安装 Certbot,以便我可以为托管在 Apache 上的各种网站颁发 SSL 证书?
我在Certbot 的网站上找不到列出的 Amazon Linux ,我在某处读到 Amazon Linux 接近 CentOS/RHEL 7,所以我选择了它并尝试按照说明进行操作,但我必须
sudo yum install certbot-apache
Run Code Online (Sandbox Code Playgroud)
它没有用,我得到:
Loaded plugins: langpacks, priorities, update-motd
No package certbot-apache available.
Error: Nothing to do
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激。
我们使用两个 DNS 提供商来实现冗余。自从 2016 年的 DynDNS DDOS 攻击以来,我希望我们并不孤单。
我正在尝试使用 Let's Encrypt certbot 和 DNS 挑战。拥有两个 DNS 提供商似乎会带来问题。作为质询过程的一部分,两个 DNS 提供商是否都需要使用相同的 TXT 记录进行更新?
真正的问题是,Let's Encrypt ACME 证书颁发机构 (CA) 如何验证 DNS TXT 条目?它是像任何客户端一样简单地查询公共 DNS,还是查询映射到我正在使用的 certbot 插件的特定 DNS 提供商?我怀疑是前者。
我试图仅使用其中一个插件创建证书。TXT 条目已创建,但验证失败。我希望我需要更新两个 DNS 提供商(或弄清楚如何链接这两个提供商,以便它们同步更改)。
文档似乎没有表明可以使用多个相同类型的插件,尽管我还没有尝试过。我的一个提供商要求我升级才能访问他们的 API。
如果无法链接多个身份验证插件,那么我相信我自动续订的唯一选择是使用带有自定义脚本的前置和后置挂钩来修改两个 DNS 提供商。
在我承担所需的工作和费用(或选择手动管理续订过程)之前,我很感激对此进行确认。
编辑:我知道 StackExchange 编写并发布了它自己的开源 DNS 更新程序dnscontrol,它可用于挂钩前和挂钩后脚本。但是,不支持我们的提供商之一。
让我们加密 certbot 有一个子命令enhance,其描述为“向现有配置添加安全增强”。
我可以在certbot 的 CLI 帮助文件中找到的唯一附加信息 是:
增强:通过向现有配置添加安全增强功能来帮助强化 TLS 配置。
目前尚不清楚在现有配置中添加了哪些附魔。修改了哪些文件等...我对使用 Ubuntu + Apache HTTP Server(使用--apache选项)进行配置特别感兴趣。
我在 AWS 中的 Ubuntu 20.04 上运行 certbot,作为快照包安装。我不确定 certbot 续订是否正常运行。我希望得到一些帮助来确定如何最好地使其发挥作用。
这是一台新服务器,我在准备生产时打开和关闭它。目前每天运行约8-10小时。它并不经常在午夜运行,我认为这是 cron 作业运行的时间。一旦我完成配置,几天后就会24/7。
我发现的一件事是这个问题的答案说
您不必设置任何东西。任何最近安装的 certbot 的 Debian/Ubuntu 都应该安装一个 systemd 计时器和一个 cron 作业(并且 cron 作业只会在 systemd 未激活时运行 certbot,因此您不会同时运行两者)。
在我看来,certbot 计时器没有运行,如果运行了,它似乎指向 /dev/null。因为 systemd 处于活动状态,所以我想知道 cron 作业是否正在运行。
定时器和系统
我发现一条评论可能存在计时器和快照问题,所以也许这是一个已知问题。
systemctl 列表定时器
计时器似乎没有运行
NEXT LEFT LAST PASSED UNIT ACTIVATES
Wed 2021-03-17 23:44:00 UTC 3h 24min left n/a n/a snap.certbot.renew.timer snap.certbot.renew.service
Run Code Online (Sandbox Code Playgroud)
Certbot 计时器似乎指向 /dev/null。这个问题表明事情不应该如此。
> root@aws2:/etc/systemd/system# ls -l | grep certbot
lrwxrwxrwx 1 root root 9 Jan 9 06:38 …Run Code Online (Sandbox Code Playgroud) 看了下/etc/cron.d/certbot,我觉得不会!该文件包含以下行:
0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew
而且,除非我读错了,否则只有当有一个名为/usr/bin/certbot(有)的可读可执行文件并且没有一个名为/run/systemd/system(但有,即使它是空的)目录时才会发生更新。
那么我是对的,这个certbot -q renew钻头永远不会运行吗?是否还有其他地方也会触发更新?(我认为可能有一些东西,/run/systemd/system因为正在检查,但正如我所说,没有。出于好奇,为什么这个小脚本会检查 不存在/run/systemd/system?)
这是在 Ubuntu 18.04 上运行最新版本certbot(v1.18.0,昨天使用官方说明安装的)。
顺便说一句,我已经跑过:
test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot renew --dry-run
作为 root 在命令行上运行,它会立即退出,退出状态为 1。
使用 Certbot 在 nginx Web 服务器上安装 R3 Let's Encrypt 证书会导致 nginx 配置中的所有其他域都包含在证书的“主题备用名称”下。这对于我的用例来说是不可取的。
我在这里阅读了手册页,并在这里和这里阅读了其他一些 Stack Exchange 帖子。
关于替代名称的使用,手册页说(我不完全理解):
-d DOMAIN, --domains DOMAIN, --domain DOMAIN 要应用的域名。对于多个域,您可以使用多个 -d 标志或输入逗号分隔的域列表作为参数。提供的第一个域将是证书的主题 CN,所有域将是证书上的主题备用名称。第一个域还将在某些软件用户界面中使用,并用作证书和相关材料的文件路径,除非另有指定或您已经拥有同名的证书。如果发生名称冲突,它将在文件路径名后附加一个数字(如 0001)。(默认:询问)
使用 Certbot 安装 Let's Encrypt 证书时,如何完全指定或省略主题备用名称?如果 Certbot 不能,在仍然使用 R3 Let's Encrypt 证书的同时是否有不同的方法?
certbot ×10
lets-encrypt ×6
ubuntu ×2
ubuntu-16.04 ×2
amazon-ec2 ×1
apache-2.4 ×1
cron ×1
iptables ×1
linux ×1
nginx ×1
python ×1
ubuntu-18.04 ×1
virtualhost ×1