Let's Encrypt SSL 证书文件未找到错误,但仍在运行

Let's Encrypt SSL 证书文件未找到错误,但仍在运行

我正在运行 SSL 证书让我们加密。我已将它们安装在运行 Apache 的 Ubuntu 机器上。设置运行正常,我可以启动网站,看到绿色挂锁,甚至在 SSL Labs 上获得了 A+。

问题是当我这样做的时候apachectl 配置测试服务器将返回文件未找到错误:

SSLCertificateFile: file '/etc/letsencrypt/live/www.example.com/fullchain.pem' not exist or is empty.

sudo service apache2 restart工作得很好。

我开始思考这个问题Let's Encrypt 社区但问题仍未解决。

sudo cat /etc/letsencrypt/live/www.example.com/fullchain.pem有效,返回有效的证书详细信息。

sudo x509 -text -noout -in /etc/letsencrypt/live/www.example.com/fullchain.pem

不起作用并返回以下错误:

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

关于为什么我会遇到错误,有什么想法吗apachectl 配置测试openssl

多谢你们!

答案1

就我而言,文件和权限不是问题所在。我试图使用 重新启动服务器apachectl restart或测试配置(apachectl -tapachectl configtest)。运行命令的用户(我)根本没有访问证书的适当权限。我只需在命令前加上 即sudo可以 root 身份运行它们!不再出现错误,配置测试返回“语法正常”,我可以重新启动服务器了。(好吧,我有点不好意思,我花了这么长时间才弄清楚这一点……)

答案2

经过几个不眠之夜,我终于让它工作了。(过度声明)我们都知道这是权限问题,但究竟哪里需要检查呢?

我继续与/ect/letsencrypt/live以及其下的目录和文件。我不断将权限从原来的改为 0755 和 0777。我没有立即注意到的是/etc/letsencrypt/live 是创建自/etc/letsencrypt/archive 并且它有一个0700权限。这就是为什么它无法读取文件的原因。在更改权限后/etc/letsencrypt/存档0755apachectl configtest已经回应了Syntax OK

虽然最初的问题已经解决,但我将把这个问题提交给让我们加密因为这些都是证书的自动安装。在“自动”模式下不应该发生这种情况。但我的设置可能与权限问题有关,因为我使用非 root 用户安装了它(但我使用了 sudo)。

希望这对某人有帮助。

答案3

同意timeSmith 的回答这些文件和文件夹的权限是故意严格的,应该保留0700

您需要运行service httpdapachectl命令,sudo以便这些进程具有 root 权限并获得对 letsencrypt 证书文件夹和文件的读取权限。

答案4

证书文件的权限最好非常严格。要允许适当的进程访问证书文件:使用以下命令启动 apache。

sudo service httpd start

或者使用此命令正常重新启动:

sudo service httpd graceful

相关内容