Let's Encrypt SSL Certificate File Not Found 错误,但仍然有效

jar*_*vis 13 ssl ssl-certificate apache-2.4 lets-encrypt

我正在运行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 configtestopenssl上遇到错误的任何想法?

谢谢你们!

小智 14

在我的情况下,文件和权限不是问题。我试图使用apachectl restart或测试配置(apachectl -tapachectl configtest)重新启动服务器。运行命令的用户 (me) 根本没有访问证书的适当权限。我只需要在命令sudo前面加上前缀就可以以 root 身份运行它们!没有更多错误,配置测试返回“语法正常”,我可以重新启动服务器。(好吧,我有点尴尬,我花了很长时间才弄明白那个……)


jar*_*vis 7

经过几个不眠之夜,我终于开始工作了。(矫枉过正的说法)我们都知道这是权限,但究竟在哪里需要检查。

我继续使用/ect/letsencrypt/live及其下的目录和文件。我不断地将权限从原始更改为 0755 和 0777。我没有立即看到的是/etc/letsencrypt/live 是从/etc/letsencrypt/archive创建的链接,它具有0700权限。这就是它无法读取文件的原因。将/etc/letsencrypt/archive的权限更改为0755 后apachectl configtest已经响应为Syntax OK.

尽管最初的问题已解决,但我会将其转回给Let's Encrypt,因为这都是证书的自动安装。这样的事情不应该发生在“自动”中。但是我的设置可能与权限问题有关,因为我使用非 root 用户安装了它(但我做了 sudo)。

希望这可以帮助某人。

  • 刚刚遇到这个问题,虽然答案是正确的,但我认为随着更新,letcrypt 最近所做的更改存档权限不起作用。但是,现在可以直接在活动文件夹上执行此操作。`sudo chmod -R 0755 /etc/letsencrypt/live` (2认同)