Fehler "AH00016: Configuration Failed" durch SSL Zertifikate beheben

Wenn der Apache2 Server plötzlich streikt und als Fehlermeldung nur ein "AH00016: Configuration Failed" kommt, hilft diese Anleitung vielleicht zur Lösung.

Die Analyse der Apache-Konfiguration wird ja in solchen Fällen meist als erstes durchgeführt:

apachectl configtest

Das Ergebnis ist bei diesem Fehler allerdings meist ernüchternd (jedoch richtig):

Syntax OK

Der Syntax der Apache2 Konfiguration und Config-Dateien ist auch richtig; es ist meist ein fehlerhaftes SSL Zertifikat. Nur welches, wenn auf dem Apache ein paar mehr Server / Domains mit SSL laufen ?

Die Lösung bietet das Tool strace, welches einfach per "apt-get" installiert werden kann:

apt-get install strace

Mit hilfe dieses Programmes kann der Start des Apache-Servers detailliert analysiert und das fehlerhafte SSL Zertifikat identifiziert werden:

strace -f apache2ctl start

Wer jetzt die meist sehr umfangreiche Ausgabe nicht verfolgen konnte, der kann diese auch durch folgenden Befehl in eine Datei umleiten lassen:

strace -f apache2ctl start &> log.txt

Jetzt finden Sie die vollständige Ausgabe der Apache2-Start-Analyse in der Datei "log.txt".

Am Ende finden Sie auch die o.a. Fehlermeldung des Servers:

[pid  7199] exit_group(1)               = ?
[pid  7199] +++ exited with 1 +++
<... wait4 resumed> [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], 0, NULL) = 7199
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=7199, si_uid=0, si_status=1, si_utime=3, si_stime=7} ---
rt_sigreturn()                          = 7199
write(1, "Action 'start' failed.\n", 23) = 23
write(1, "The Apache error log may have mo"..., 48) = 48
exit_group(1)                           = ?
+++ exited with 1 +++

Suchen Sie dann in den Zeile davor rückwärts die Fehlermeldung, welche z.Bsp. so aussehen kann:

[pid  7218] close(57)                   = 0
[pid  7218] munmap(0x7f70ca8b2000, 4096) = 0
[pid  7218] open("/home/example/ssl.key", O_RDONLY) = 57
[pid  7218] fstat(57, {st_mode=S_IFREG|0700, st_size=3268, ...}) = 0
[pid  7218] mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f70ca8b2000
[pid  7218] read(57, "-----BEGIN PRIVATE KEY-----\nMIIJ"..., 4096) = 3268
[pid  7218] close(57)                   = 0
[pid  7218] munmap(0x7f70ca8b2000, 4096) = 0
[pid  7218] write(21, "[Sun May 01 09:34:22.173754 2016"..., 182) = 182
[pid  7218] write(2, "AH00016: Configuration Failed\n", 30) = 30
[pid  7218] select(0, NULL, NULL, NULL, {0, 10000}) = 0 (Timeout)
[pid  7218] close(53)                   = 0

Im oberen Beispiel ist es die Datei "/home/example/ssl.key", welche das Problem verursacht.

Korrigieren Sie das SSL Zertifikat (die Datei neu auf den Server kopieren o.ä.) und starten Sie den Apache dann erneut:

/etc/init.d/apache2 restart

Meist wird er dann problemlos wieder starten:

[ ok ] Restarting apache2 (via systemctl): apache2.service.