Apache: SSLCertificateKeyFile: il file non esiste o è vuoto


33

Sto configurando SSL per Apache 2. Il mio sistema è Ubuntu Server 10.04 LTS. Ho le seguenti impostazioni relative a SSL nella configurazione del mio vhost:

SSLEngine On
SSLCertificateKeyFile /etc/ssl/private/server.insecure.key
SSLCertificateFile    /etc/ssl/certs/portal.selfsigned.crt

(Nota a margine: sto usando .insecureil file chiave perché il file non è protetto da passphrase e mi piace vedere chiaramente che si tratta di un file chiave non sicuro)

Quindi, quando riavvio Apache ricevo il seguente messaggio:

Syntax error on line 39 of /etc/apache2/sites-enabled/500-portal-https:
SSLCertificateKeyFile: file '/etc/ssl/private/server.insecure.key' does not exist or is empty
Error in syntax. Not restarting.

Ma il file è lì e non è vuoto (in realtà contiene una chiave privata):

sudo ls -l /etc/ssl/private/server.insecure.key
-rw-r----- 1 root www-data 887 2012-08-07 15:14 /etc/ssl/private/server.insecure.key
sudo ls -ld /etc/ssl/private/
drwx--x--- 2 root www-data 4096 2012-08-07 13:02 /etc/ssl/private/

Ho provato a cambiare la proprietà, usando due gruppi www-data e ssl-cert. Non sono sicuro di quale sia quello giusto in Ubuntu: per impostazione predefinita Ubuntu utilizza ssl-cert, ma d'altra parte i processi apache funzionano con i dati www dell'utente: viene avviato dall'utente root, ma cambia in www-data in alcuni punto, e non sono sicuro di quando vengano letti i certificati.

Comunque, cambiare il proprietario del gruppo non ha migliorato la situazione. Le mie domande sono:

  1. Cos'altro potrei provare a farlo funzionare?
  2. Come posso verificare che il mio file di chiavi sia un file di chiavi valido?
  3. Come posso verificare che il file di chiavi e il certificato ( /etc/ssl/certs/portal.selfsigned.crt) funzionino insieme?

Penso che Apache stia dando un messaggio di errore fuorviante e vorrei individuare l'errore.


Ciao, potresti contrassegnare questa domanda come risposta?

2
Devo sottolineare che ho ricevuto questo messaggio di errore dall'errore di base di esecuzione service apache2 restartinvece di **sudo** service apache2 restart... nota a se stesso:sudo make me a sandwich fool
icc97

Trovo molto utile il seguente articolo. Non ho potuto configurare il sistema con questo thread. digitalocean.com/community/tutorials/…
Léo Léopold Hertz

Risposte:


37

Ho trovato l'errore. È stato perché sto usando uno script per impostare i certificati e uno dei passaggi che sto eseguendo è apache2ctl configtest. L'errore veniva da questo comando e non dal riavvio di Apache, che era ciò che mi stava fuorviando. Dato che stavo eseguendo il comando apache2ctl come utente normale, non aveva accesso ai file di chiavi e quindi al messaggio di errore.

Facit: assicurati che tutti i tuoi comandi apache siano eseguiti con sudo, anche quelli che sono destinati solo alla verifica della sintassi ( apache2ctl), poiché hanno anche bisogno dell'accesso alle chiavi.


8

Ricevo anche il messaggio

SSLCertificateKeyFile: file '/path/to/file' does not exist or is empty

mentre /path/to/fileesistono e hanno le giuste autorizzazioni, solo a causa di SELinux acceso e questo file era inaccessibile per l'utente apache.

Sembra così:

$ 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

Per risolvere questo problema, corro sudo restorecon -Rv /etc/pki/tls/certs/: riparerà la proprietà SELinux per il file del problema.


mi ha aiutato per un certificato non generato su quel server ma caricato da altra fonte
tymik,

2
sudo: restorecon: command not found
Francisco Corrales Morales,

@FranciscoCorralesMorales restoreconè una parte del policycoreutilspacchetto. Inoltre forse non hai affatto SELinux?
AntonioK,

6

L'ho fatto e mi ha aiutato su CentOS 5.7

server:~ # chcon -t cert_t /etc/pki/tls/private/my.key 
server:~ # ls -laZ /etc/pki/tls/private/

1

Ho ricevuto un messaggio simile:

SSLCertificateChainFile: file '/opt/bitnami/apache2/conf/DigiCertCA.crt\xe2\x80\x9d' does not exist or is empty

Il mio problema era che l'editor di testo che stavo usando metteva una "giusta citazione" ascii 148 anziché una normale doppia citazione ascii 34; usando un editor di tipo unix (es. TextWrangler) inserisci la citazione giusta e risolvi il problema.


0

Le autorizzazioni sono sbagliate, ma secondo la tua risposta non è stata la causa del problema:

drwx--x--- 2 root www-data 4096 2012-08-07 13:02 /etc/ssl/private/

/ etc / ssl / private di solito appartiene al gruppo ssl-cert su sistemi basati su debian.

Ho appena notato i permanenti 0710 e mi chiedo per cosa possa essere usato.


Probabilmente hai ragione, dovrebbe essere almeno il 0750. Ho provato diverse cose e lo stato che ho pubblicato non è probabilmente il più corretto. Eseguire apache2ctl come root ha sicuramente risolto i miei problemi.
dangonfast,

1
0710 va bene, devi conoscere il nome del file per accedervi.
ypnos,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.