Apache: SSLCertificateKeyFile: file does not exist or is empty
Solution 1:
I found the error. It was because I am using a script to setup the certificates, and one of the steps I am performing is apache2ctl configtest
. The error was coming from this command, and not from apache restart, which was what was misleading me. Since I was running the apache2ctl command as normal user, it had no access the the keyfiles, and thus the error message.
Facit: make sure all your apache commands are run with sudo, even the ones which are only intended for syntax verification (apache2ctl
), since they alse need access to the keys.
Solution 2:
I also get the message
SSLCertificateKeyFile: file '/path/to/file' does not exist or is empty
while /path/to/file
exist and have right permissions, just because of SELinux turned on and this file was unaccessable for apache user.
It looks like this:
$ sudo ls -laZ /etc/pki/tls/certs/
drwxr-xr-x. root root system_u:object_r:cert_t:s0 .
drwxr-xr-x. root root system_u:object_r:cert_t:s0 ..
-rw-------. root root unconfined_u:object_r:cert_t:s0 this-one-works.crt
-rw-------. root root unconfined_u:object_r:admin_home_t:s0 this-one-is-unaccessable.crt
To fix this, I run sudo restorecon -Rv /etc/pki/tls/certs/
- it will repair SELinux property for the problem file.
Solution 3:
I've done this and it helped me on CentOS 5.7
server:~ # chcon -t cert_t /etc/pki/tls/private/my.key
server:~ # ls -laZ /etc/pki/tls/private/