Apache:SSLCertificateFile:文件不存在或为空

Apache:SSLCertificateFile:文件不存在或为空

我使用以下命令创建了私钥、CSR 和 CRT,以在 Apache 2.4.6 上使用 HTTPS 运行网站。操作系统是 Cent OS 7。

// To generate a Private Key
1. openssl genrsa -des3 -out www.licweb.com.key 1024

// To generate CSR
2. openssl req -new -key www.licweb.com.key -out www.licweb.com.csr

// To generate CRT
3. openssl x509 -req -days 365 -in www.licweb.com.csr -signkey www.licweb.com.key -out www.licweb.com.crt

现在,我在我的httpd配置文件文件。但之后,当我尝试重新启动 Apache 时,出现以下错误:

错误:SSLCertificateFile:文件“/var/www/html/licweb/www.licweb.com.crt”不存在或为空

  1. 路径正确。
  2. 该文件也存在。
  3. 文件中甚至还有数据,因此它不是空的。

[我尝试过的]

我尝试了在 Google 资源上找到的以下解决方案:

解决方案 1:

正在执行命令apachectl 配置测试运行良好。

解决方案 2:

使用以下命令修复 SELinux:

1. sudo restorecon -Rv /etc/pki/tls/certs/ 
2. chcon --reference=/etc/pki/tls/private/localhost.key /etc/pki/tls/private/ca.key

解决方案 3:

chcon -t cert_t /etc/pki/tls/private/my.key

但这些解决方案都不起作用。我仍然收到相同的错误。


我认为即使权限也很好:

ls -l www.licweb.com.key
-rwxrwxrwt. 1 root root 963 Jul 17 10:39 www.licweb.com.key

我想不出任何其他解决方案。有人知道哪里出了问题或者我做错了什么吗?任何帮助都将不胜感激。谢谢。

答案1

请注意,您引用的消息指的是证书文件 /var/www/html/licweb/www.licweb.com.crt,而“我尝试过的内容”之后提到的所有内容均指的是密钥文件。

还要注意,密钥文件不应该具有您提到的权限。密钥文件的权限应为所有者 root 和模式 600。许多读取密钥文件的应用程序都会检查该模式是否不允许其他应用程序访问。因此,密钥上的权限也会导致错误,但这将是不同的错误。

在您尝试的解决方案中,您的密钥位于 /etc/pki/tls 中,而错误消息指向的是 /var/www/html/licweb。还提到了 ca.key,但您的证书是自签名的。

答案2

再次检查你的资源。你需要:

  • www.licweb.com.key
  • www.licweb.com.crt(或 .pem)
  • 证书

它们都必须处于可读路径中并具有可读权限。

在你的 Apache 配置中你需要这样的内容

SSLEngine on
SSLCertificateFile /path/to/www.licweb.com.crt
SSLCertificateKeyFile /path/to/www.licweb.com.key
SSLCertificateChainFile /path/to/ca.crt

你不需要 ca.key

答案3

试试这个它的作品 须藤chcon -t httpd_sys_rw_content_t {文件夹路径}

例如,如果证书文件位于 /var/ssl 中,则为 {folder_path}

{文件夹路径} = /var/ssl/*

重启 apache 服务器后

相关内容