AlmaLinux 9 中的SSL证书权限故障排除:解决VirtualHosts 的 Apache SSL错误

AlmaLinux 9 中的SSL证书权限故障排除:解决VirtualHosts 的 Apache SSL错误

我正在从 CentOS 过渡到 AlmaLinux 9,在设置安全虚拟主机时遇到了一个奇怪的 SSL 证书问题。虽然最初第一个虚拟主机没有遇到什么大问题,但当我尝试在同一台服务器上设置第二个虚拟主机时,问题开始出现。尽管使用了相同的配置文件和证书,我还是遇到了与权限相关的错误,尤其是在访问位于 中的证书文件时/etc/pki/ca-trust/source/anchors/。在本教程中,我将引导您完成我找到的故障排除步骤和解决方案,希望能为您节省时间并避免烦恼。

成功为第一个虚拟主机设置 SSL 证书后,我继续在同一服务器上配置第二个虚拟主机。然而,第一个虚拟主机运行正常,而第二个虚拟主机却不断抛出 SSL 相关的错误:

[Tue Jun 10 17:38:50.918373 2025] [ssl:emerg] [pid 980:tid 980] AH02562: Failed to configure certificate alexrodal.eu:443:0 (with chain), check /etc/pki/ca-trust/source/anchors/alexrodal.eu-chain.pem
[Tue Jun 10 17:38:50.918400 2025] [ssl:emerg] [pid 980:tid 980] SSL Library Error: error:8000000D:system library::Permission denied (calling fopen(/etc/pki/ca-trust/source/anchors/alexrodal.eu-chain.pem, r))
[Tue Jun 10 17:38:50.918408 2025] [ssl:emerg] [pid 980:tid 980] SSL Library Error: error:10080002:BIO routines::system lib
[Tue Jun 10 17:38:50.918414 2025] [ssl:emerg] [pid 980:tid 980] SSL Library Error: error:0A080002:SSL routines::system lib

错误消息清楚地表明读取 SSL 证书链文件 ( alexrodal.eu-chain.pem) 存在权限问题。尽管我设置了文件权限755并确保root用户拥有该证书文件,但问题仍然存在,我无法找出原因。

SSL虚拟主机配置

两个网站的 SSL VirtualHost 配置应该相同:

<VirtualHost *:80>
    ServerName alexrodal.eu
    ServerAlias www.alexrodal.eu
    Redirect permanent / https://alexrodal.eu/
</VirtualHost>

<VirtualHost *:443>
    ServerName alexrodal.eu
    ServerAlias www.alexrodal.eu
    ServerAdmin xxxxx@gmail.com
    DocumentRoot /var/www/alexrodal.eu
    SSLEngine on
    SSLCertificateFile /certificados/alexrodal.eu-chain.pem
    SSLCertificateKeyFile /certificados/alexrodal.eu-key.pem
    SSLCertificateFile /etc/pki/ca-trust/source/anchors/alexrodal.eu-chain.pem
    SSLCertificateKeyFile /etc/pki/ca-trust/source/anchors/alexrodal.eu-key.pem
    ErrorLog /var/log/httpd/alexrodal.eu-error.log
    CustomLog /var/log/httpd/alexrodal.eu-access.log combined
</VirtualHost>

乍一看,配置中似乎没有任何语法问题。然而,仔细检查后,我意识到我添加了两次SSLCertificateFileandSSLCertificateKeyFile指令——一次引用存储在 中的证书/certificados/,一次引用存储在 中的证书/etc/pki/ca-trust/source/anchors/。

解决方案:修复权限问题

解决这个问题的第一步是确保 Apache 配置文件中没有冗余或冲突的指令。为了避免混淆,配置应该只引用一个位置的证书。我决定使用/etc/pki/ca-trust/source/anchors/一致的路径,因为它是系统管理的证书的存储位置。修改配置后,如下所示:

<VirtualHost *:443>
    ServerName alexrodal.eu
    ServerAlias www.alexrodal.eu
    ServerAdmin xxxxx@gmail.com
    DocumentRoot /var/www/alexrodal.eu
    SSLEngine on
    SSLCertificateFile /etc/pki/ca-trust/source/anchors/alexrodal.eu-chain.pem
    SSLCertificateKeyFile /etc/pki/ca-trust/source/anchors/alexrodal.eu-key.pem
    ErrorLog /var/log/httpd/alexrodal.eu-error.log
    CustomLog /var/log/httpd/alexrodal.eu-access.log combined
</VirtualHost>

下一步是验证并调整/etc/pki/ca-trust/source/anchors/目录中证书文件的权限。以下是我遵循的步骤:

验证文件所有权和权限:

确保证书文件归以下人员所有root:

chown root:root /etc/pki/ca-trust/source/anchors/alexrodal.eu-chain.pem
chown root:root /etc/pki/ca-trust/source/anchors/alexrodal.eu-key.pem

确保文件权限设置为644(所有人可读,只有所有者可写):

chmod 644 /etc/pki/ca-trust/source/anchors/alexrodal.eu-chain.pem
chmod 644 /etc/pki/ca-trust/source/anchors/alexrodal.eu-key.pem

检查目录权限:

验证目录/etc/pki/ca-trust/source/anchors/是否可访问并且具有正确的权限:

chmod 755 /etc/pki/ca-trust/source/anchors/

重新启动 Apache:

完成这些更改后,我重新启动了 Apache 以应用新配置:

systemctl restart httpd

测试 SSL 配置:

为了确保一切设置正确,我使用以下命令来测试 Apache 配置:

apachectl configtest

结果应该显示“语法正常”。如果显示正常,您可以通过浏览器访问该网站或使用以下命令来检查服务器的响应curl:

curl -I https://alexrodal.eu

通过删除 Apache 配置中冗余的证书文件路径并更正 SSL 证书的文件权限,问题已得到解决。需要注意的是,Apache 需要 SSL 证书文件拥有适当的读取权限,并且在设置虚拟主机时,任何配置错误或不一致都可能导致类似我遇到的错误。

如果您在 AlmaLinux 或任何其他类似的 Linux 发行版上设置 SSL,请务必确保您的证书已正确放置,配置文件干净且一致,并且文件权限已正确设置。按照以下步骤操作,您应该能够解决大多数因权限问题而导致的 SSL 相关错误。

未经允许不得转载:A5数据 » AlmaLinux 9 中的SSL证书权限故障排除:解决VirtualHosts 的 Apache SSL错误

相关文章

contact