Copying sources and texts (also in parts) for publishing without our permission is NOT ALLOWED. We are fed up with finding our work on other sites (like stackoverflow).
Das Kopieren von Quellcode und Texten (auch in Auszügen) ist nicht erlaubt. Wir haben es gründlich satt, unsere Arbeit auf anderen Webseiten zu finden.

Copying for non-public usage is allowed.           Das private Kopieren und Benutzen ist natürlich erlaubt und erwünscht.
28. Apr 2016
Teaser

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.