[Solved] Apache 2.4.25 und SSL: Keine Verschlüsselung

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
Benutzeravatar
donnerstag
Beiträge: 64
Registriert: 30.03.2006 21:40:57

[Solved] Apache 2.4.25 und SSL: Keine Verschlüsselung

Beitrag von donnerstag » 13.05.2019 16:26:59

Hallo Gemeinde,

ich hab mir einen neuen Server mit Jessie aufgesetzt und auf Stretch upgegradet. Apache, MariaDB, PHP, Froxlor, Let's Encrypt.
Was ich diesmal aber partout nicht zum Laufen kriege, ist SSL für den Webserver.
An der Oberfläche (Firefox) sieht man beim Aufruf der HTTPS://-URL die Meldung "SSL_ERROR_RX_RECORD_TOO_LONG".

Die Diagnosetipps, die ich dazu im Netz gefunden habe, sollen hier kurz angedeutet sein:
1. Lauscht Apache auf :443? netstat -luntep|grep 443 => ja:
tcp meineIP:443 0.0.0.0:* LISTEN 0 28771 3212/apache2
2. Ist der virtuelle Host für Port 443 konfiguriert?
apache2ctl -S => ja:

Code: Alles auswählen

    meineIP:443       is a NameVirtualHost
        default server vsrvXYZ.myhoster.de
        port 443 namevhost dievhostdomain.de
        
3. antwortet der virtuelle Host lokal auf "wget" und "openssl s_client"?
openssl s_client -connect dievhostdomain.de:443 => ja, aber:
letzteres aber nur mit 5 Bytes ("HTTP/", das sieht man mit der -debug-Option).
Ich zeige etwas mehr von der Antwort:

Code: Alles auswählen

      CONNECTED(00000003)
      139918278897792:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:../ssl/record/ssl3_record.c:252:
      ---
      no peer certificate available
      ---
      No client certificate CA names sent
      ---
      SSL handshake has read 5 bytes and written 176 bytes
      Verification: OK
      
4. Was loggt mod_ssl, wenn man den LogLevel auf "debug" setzt?
Je Request genau eine Zeile:

Code: Alles auswählen

protocol.c(1281): [client meineIP:32900] AH00566: request failed: malformed request line
Im Netz gibt es zu dieser Fehlerbeschreibung im Wesentlichen drei Lösungsansätze:
- Apache erzwingt seit 2.4.25 eine strengere Datenübergabe bei SSL (siehe Apache-Bugzilla Nr. 60695). Das kann man durch
den Vers "HttpProtocolOptions Allow0.9 Unsafe" in apache2.conf abschalten (oder openssl s_client mit Option "-crlf").
Aber bei mir lag es nicht daran, bzw. brachte keine Änderung.
- Problem mit einem bestimmten Protokoll. Aber die Optionen -no_tls1_2 -no_tls1_1 -no_tls1 (in openssl c_client)
brachten keine Klärung
- Problem mit Proxy oder Firewall
ich teste auf der Shell des Webservers selbst, kann einen Proxy also ausschließen. Auch mit deaktivierter Firewall (shorewall clear).
Aber keine Veränderung.

Wisst ihr, wie ich genauer rausfinden kann, wer hier Probleme macht?

Danke euch allen!
do.
Zuletzt geändert von donnerstag am 16.05.2019 23:59:00, insgesamt 1-mal geändert.

mludwig
Beiträge: 559
Registriert: 30.01.2005 19:35:04

Re: Apache 2.4.25 und SSL: Keine Verschlüsselung

Beitrag von mludwig » 13.05.2019 16:39:52

Gibt es beim Starten vom Apachen Fehlermeldungen (error.log).

Ansonsten würde ich noch prüfen: ist ein Zertifikat bzw. eine Chain konfiguriert (SSLCertificateFile und SSLCertificateKeyFile, SSLEngine On --> alles für den Vhost mit SSL)

gibt es diese Datei, hat sie das richtige Format, hat sie die richtige Berechtigung (also lesbar durch den Apache.)

Benutzeravatar
bluestar
Beiträge: 985
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: Apache 2.4.25 und SSL: Keine Verschlüsselung

Beitrag von bluestar » 14.05.2019 11:11:34

Versuche mal folgendes: http://<ip deines servers>:443/ und schaue was passiert, wenn da die Webseite kommt, dann ist lediglich dein SSL kaputt.

Benutzeravatar
donnerstag
Beiträge: 64
Registriert: 30.03.2006 21:40:57

Re: Apache 2.4.25 und SSL: Keine Verschlüsselung

Beitrag von donnerstag » 14.05.2019 23:30:55

Hallo mludwig,
mludwig hat geschrieben: ↑ zum Beitrag ↑
13.05.2019 16:39:52
Gibt es beim Starten vom Apachen Fehlermeldungen (error.log).
Nein! Aber eine Info-Zeile, die mich wundert:
[ssl:info] ... AH02568: Certificate and private key vsrv9876.meinhoster.de:443:0 configured from /etc/ssl/certs/ssl-cert-snakeoil.pem and /etc/ssl/private/ssl-cert-snakeoil.key
"meine" Zertifikate und definierten Domains (die namevhosts, deren Zertifikate in /etc/apache2/ssl liegen) tauchen im error.log dagegen nicht auf.
mludwig hat geschrieben: Ansonsten würde ich noch prüfen: ist ein Zertifikat bzw. eine Chain konfiguriert (SSLCertificateFile und SSLCertificateKeyFile, SSLEngine On --> alles für den Vhost mit SSL)
Beim Vhost steht:
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/sslcert.crt
SSLCertificateKeyFile /etc/apache2/ssl/sslcert.key
das ist ein self-signed-Zertifikat, und der modulus für beide Files stimmt überein
openssl x509 -noout -modulus -in sslcert.crt| openssl md5
openssl rsa -noout -modulus -in sslcert.key| openssl md5
mludwig hat geschrieben: gibt es diese Datei, hat sie das richtige Format, hat sie die richtige Berechtigung (also lesbar durch den Apache.)
Das Verzeichnis ist für alle lesbar (755, Owner: root), das Zertifikat auch (644 / root), der private Schlüssel nur für root (600 / root).
Grüße,
do.

Benutzeravatar
donnerstag
Beiträge: 64
Registriert: 30.03.2006 21:40:57

Re: Apache 2.4.25 und SSL: Keine Verschlüsselung

Beitrag von donnerstag » 14.05.2019 23:32:51

Hallo bluestar,
bluestar hat geschrieben: ↑ zum Beitrag ↑
14.05.2019 11:11:34
Versuche mal folgendes: http://<ip deines servers>:443/ und schaue was passiert, wenn da die Webseite kommt, dann ist lediglich dein SSL kaputt.
da kommt tatsächlich eine lesbare Antwort (hallo welt). Wie krieg ich denn raus, was bei meinem SSL kaputt ist?
Grüße,
do.

getphp
Beiträge: 61
Registriert: 14.01.2006 15:23:28

Re: Apache 2.4.25 und SSL: Keine Verschlüsselung

Beitrag von getphp » 15.05.2019 13:11:08

Schau dir im Detail mal die vhosts an. Bei der zuerst genannten Fehlermeldung kann es sein, dass im Teil für Port 80 SSL aktiviert wurde oder bei 443 eben nicht.
Gruss
getphp

Benutzeravatar
donnerstag
Beiträge: 64
Registriert: 30.03.2006 21:40:57

Re: Apache 2.4.25 und SSL: Keine Verschlüsselung

Beitrag von donnerstag » 15.05.2019 23:23:42

getphp hat geschrieben: ↑ zum Beitrag ↑
15.05.2019 13:11:08
Schau dir im Detail mal die vhosts an. Bei der zuerst genannten Fehlermeldung kann es sein, dass im Teil für Port 80 SSL aktiviert wurde oder bei 443 eben nicht.
apache2ctl -S liefert aber für mich plausible Daten, ich zeige mal die ganze Ausgabe. Vielleicht hab ich nur einen blinden Fleck, weil ich schon zu lange draufstarre.

Code: Alles auswählen

xx.yy.zz.kk:80        is a NameVirtualHost
         default server vsrv1234.myhoster.de (/etc/apache2/sites-enabled/10_froxlor_ipandport_xx.yy.zz.kk.80.conf:5)
         port 80 namevhost vsrv1234.myhoster.de (/etc/apache2/sites-enabled/10_froxlor_ipandport_xx.yy.zz.kk.80.conf:5)
         port 80 namevhost zweitevhostdomain.vsrv1234.myhoster.de (/etc/apache2/sites-enabled/27_froxlor_normal_vhost_zweitevhostdomain.vsrv1234.myhoster.de.conf:6)
                 wild alias *.zweitevhostdomain.vsrv1234.myhoster.de
         port 80 namevhost system.vsrv1234.myhoster.de (/etc/apache2/sites-enabled/27_froxlor_normal_vhost_system.vsrv1234.myhoster.de.conf:6)
                 wild alias *.system.vsrv1234.myhoster.de
         port 80 namevhost zweitevhostdomain.de (/etc/apache2/sites-enabled/35_froxlor_normal_vhost_zweitevhostdomain.de.conf:6)
                 alias www.zweitevhostdomain.de
         port 80 namevhost dievhostdomain.de (/etc/apache2/sites-enabled/35_froxlor_normal_vhost_dievhostdomain.de.conf:6)
xx.yy.zz.kk:443       is a NameVirtualHost
         default server vsrv1234.myhoster.de (/etc/apache2/sites-enabled/10_froxlor_ipandport_xx.yy.zz.kk.443.conf:6)
         port 443 namevhost vsrv1234.myhoster.de (/etc/apache2/sites-enabled/10_froxlor_ipandport_xx.yy.zz.kk.443.conf:6)
         port 443 namevhost zweitevhostdomain.de (/etc/apache2/sites-enabled/35_froxlor_ssl_vhost_zweitevhostdomain.de.conf:6)
                 alias www.zweitevhostdomain.de
         port 443 namevhost dievhostdomain.de (/etc/apache2/sites-enabled/35_froxlor_ssl_vhost_dievhostdomain.de.conf:6)
*:80                   vsrv1234.myhoster.de (/etc/apache2/sites-enabled/000-default.conf:1)
*:443                  vsrv1234.myhoster.de (/etc/apache2/sites-enabled/001-default-ssl.conf:2)
Hab ich eine fehlende Aktivierung übersehen?
Für den vhost, um den es geht, ist konfiguriert:
35_froxlor_ssl_vhost_dievhostdomain.de.conf:

Code: Alles auswählen

<VirtualHost xx.yy.zz.kk:443>
  ServerName dievhostdomain.de
  SSLEngine On
  SSLProtocol -ALL +TLSv1 +TLSv1.2
  SSLCompression Off
  SSLHonorCipherOrder On
  SSLCipherSuite ECDH+AESGCM:ECDH+AES256:!aNULL:!MD5:!DSS:!DH:!AES128
  SSLVerifyDepth 10
  SSLCertificateFile /etc/apache2/ssl/sslcert.crt
  SSLCertificateKeyFile /etc/apache2/ssl/sslcert.key
  DocumentRoot "/var/www/html/"
  ...
 </VirtualHost>
Und Apache startet ohne Fehler (error.log).
Grüße,
do.

Benutzeravatar
donnerstag
Beiträge: 64
Registriert: 30.03.2006 21:40:57

Re: Apache 2.4.25 und SSL: Keine Verschlüsselung

Beitrag von donnerstag » 16.05.2019 23:57:00

Danke, ihr habt mich in die richtige Richtung geschubst:

Es muss ein ziemlich banaler Fehler bei der vHost-Konfiguration sein.

Das auf meinem Server installierte Verwaltungs-Panel Froxlor legt automatisch zwei Sites für den Default-Servernamen an.
Die .conf-Dateien heißen
10_froxlor_ipandport_xx.yy.zz.kk.443.conf
10_froxlor_ipandport_xx.yy.zz.kk.80.conf

Die *.443.conf enthält aber kein SSLEngine On, nur:

Code: Alles auswählen

Listen xx.yy.zz.kk:443
<VirtualHost xx.yy.zz.kk:443>
DocumentRoot "/var/www/html/"
ServerName vsrv1234.meinhoster.de
</VirtualHost>
Erst, wenn ich die weiteren Zeilen aus den (wohl ok konfigurierten) virtuellen Hosts hier reinkopiere, funktioniert SSL für den Default-Servernamen
UND dann auch für meine vHosts.

Insgesamt sieht das eher nach einer Frage für das Froxlor-Board aus; man sollte offensichtlich zuerst SSL für den Default-Servernamen, dann ggf. Let's Encrypt, dann
erst SSL für vHosts konfigurieren.

Danke an alle, die geschrieben haben, ich hatte echt tagelang in die falsche Richtung gesucht.
do.

Antworten