Frage Apache: SSLCertificateKeyFile: Datei existiert nicht oder ist leer


Ich konfiguriere SSL für Apache 2. Mein System ist Ubuntu Server 10.04 LTS. Ich habe die folgenden SSL-bezogenen Einstellungen in meiner vhost-Konfiguration:

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

(Randnotiz: Ich benutze .insecure für die Schlüsseldatei, da die Datei nicht durch eine Passphrase geschützt ist, und ich möchte deutlich sehen, dass es sich um eine unsichere Schlüsseldatei handelt.

Also, wenn ich Apache neu starte, bekomme ich die folgende Nachricht:

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.

Aber die Datei ist da und ist nicht leer (eigentlich enthält sie einen privaten Schlüssel):

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/

Ich habe versucht, den Besitz zu ändern, mit zwei Gruppen www-data und ssl-cert. Ich bin mir nicht sicher, welcher ist der richtige in Ubuntu: Standardmäßig verwendet Ubuntu ssl-cert, aber auf der anderen Seite die Apache-Prozesse mit Benutzer www-Daten laufen: Es wird von Benutzer root gestartet, aber ändert sich zu www-Daten bei einigen Punkt, und ich bin nicht sicher, wann die Zertifikate gelesen werden.

Aber die Änderung des Gruppenbesitzers hat die Situation nicht verbessert. Meine Fragen sind:

  1. Was könnte ich sonst noch versuchen, damit das funktioniert?
  2. Wie kann ich überprüfen, ob meine Schlüsseldatei eine gültige Schlüsseldatei ist?
  3. Wie kann ich überprüfen, dass die Schlüsseldatei und das Zertifikat (/etc/ssl/certs/portal.selfsigned.crt) zusammenarbeiten?

Ich denke, dass Apache eine irreführende Fehlermeldung gibt, und ich möchte den Fehler genau lokalisieren.


26
2017-08-11 11:20


Ursprung


Hallo, kannst du diese Frage als beantwortet markieren?
Ich sollte darauf hinweisen, dass ich diese Fehlermeldung vom Grundfehler des Laufens bekommen habe service apache2 restart anstatt **sudo** service apache2 restart... Notiz an mich selbst: sudo make me a sandwich fool - icc97
Ich finde den folgenden Artikel sehr hilfreich. Ich konnte das System nicht nach diesem Thread einrichten. digitalocean.com/community/tutorials/... - Léo Léopold Hertz 준영


Antworten:


Ich habe den Fehler gefunden. Es war, weil ich ein Skript verwende, um die Zertifikate einzurichten, und einer der Schritte, die ich ausführe, ist apache2ctl configtest. Der Fehler kam von diesem Befehl und nicht vom Apache-Neustart, was mich irreführte. Da ich den Befehl apache2ctl als normaler Benutzer ausgeführt habe, hatte er keinen Zugriff auf die Schlüsseldateien und somit auf die Fehlermeldung.

Facit: Stellen Sie sicher, dass alle Ihre Apache-Befehle mit sudo ausgeführt werden, auch diejenigen, die nur zur Syntaxüberprüfung gedacht sind (apache2ctl), da sie Zugriff auf die Schlüssel benötigen.


25
2017-08-11 12:08





Ich bekomme auch die Nachricht

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

während /path/to/file existieren und haben die richtigen Berechtigungen, nur weil SELinux eingeschaltet ist und diese Datei für Apache-Benutzer nicht zugänglich ist.

Es sieht aus wie das:

$ 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

Um das zu beheben, renne ich sudo restorecon -Rv /etc/pki/tls/certs/ - Es wird SELinux-Eigenschaft für die Problemdatei reparieren.


7
2018-01-12 14:43



es hat mir bei einer certs geholfen, die nicht auf diesem server generiert, sondern von einer anderen quelle hochgeladen wurde - tymik
sudo: restorecon: command not found - Francisco Corrales Morales
@FranciscoCorralesMorales restorecon ist ein Teil von policycoreutils Paket. Vielleicht hast du SELinux überhaupt nicht? - AntonioK


Ich habe das gemacht und es hat mir auf CentOS 5.7 geholfen

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

5
2017-09-11 13:40





Ich habe eine ähnliche Nachricht erhalten:

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

Mein Problem war, dass der Texteditor, den ich benutzte, ein "richtiges Zitat" als ASCII 148 anstelle eines normalen doppelten Zitats ASCII 34 eingab; Verwenden Sie einen Unix-Typ-Editor (z. B. TextWrangler) in das richtige Zitat und das Problem behoben.


1
2017-11-08 05:22





Berechtigungen sind falsch, aber laut Ihrer Antwort war es nicht die Ursache des Problems:

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

/ etc / ssl / private gehört normalerweise zur Gruppe ssl-cert auf Debian-basierten Systemen.

Habe gerade die 0710 perms gemerkt und frage mich, wofür sie benutzt werden können.


0
2017-08-11 23:28



Du hast wahrscheinlich Recht, es sollte mindestens 0750 sein. Ich habe verschiedene Dinge ausprobiert, und der Status, den ich gepostet habe, ist wahrscheinlich nicht der richtige. Das Ausführen von apache2ctl als root hat meine Probleme sicher gelöst. - dangonfast
0710 ist in Ordnung, Sie müssen den Dateinamen kennen, um darauf zugreifen zu können. - ypnos