ubuntuusers.de

SSL mit Letsencrypt und Apache - was mach ich falsch?

Status: Ungelöst | Ubuntu-Version: Server 16.04 (Xenial Xerus)
Antworten |

BlackListMe

Anmeldungsdatum:
5. Oktober 2015

Beiträge: 21

Hallo Zusammen,

ich versuche mich seit einiger Zeit daran, meinen Webserver per SSL abzusichern und scheitere einfach jedes mal. Ich brauche also bitte die Hilfe vom Profi ☺

Folgendes Setup:

Ich habe eine feste externe IP, die mit meiner Fritz.Box verheiratet ist. Zudem habe ich eine Domain, die per A-record auf die externe IP zeigt. Die Fritzbox leitet alle ankommenden Anfragen auf Port 80 an Port 80 und von 443 auf 443. Die Ports sind dann auf den Zielserver gemappt. http funktioniert, https nicht ☹

Ich habe mir mit letsencrypt manuell ein Zertifikat für meine domain ausgestellt und folgende Dateien erhalten:

1
2
3
4
5
6
ls -la

lrwxrwxrwx 1 root root   36 Nov 13 10:42 cert.pem -> ../../archive/filder.cloud/cert2.pem
lrwxrwxrwx 1 root root   37 Nov 13 10:42 chain.pem -> ../../archive/filder.cloud/chain2.pem
lrwxrwxrwx 1 root root   41 Nov 13 10:42 fullchain.pem -> ../../archive/filder.cloud/fullchain2.pem
lrwxrwxrwx 1 root root   39 Nov 13 10:42 privkey.pem -> ../../archive/filder.cloud/privkey2.pem

Apache habe ich wie folgt konfiguriert

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<VirtualHost *:80>
   ServerAdmin admin@domain.cloud
   ServerName domain.cloud
   DocumentRoot /var/www/html/domain.cloud

   ErrorLog /var/log/apache/domain.cloud_error.log
   CustomLog /var/log/apache/domain.cloud_access.log combined
</VirtualHost>


<VirtualHost *:443>
   ServerAdmin admin@domain.cloud
   ServerName domain.cloud
   DocumentRoot /var/www/html/domain.cloud

   ErrorLog /var/log/apache/domain.cloud_error.log
   CustomLog /var/log/apache/domain.cloud_access.log combined

   SSLEngine On
   SSLProtocol All -SSLv2 -SSLv3
   SSLHonorCipherOrder On
   SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
   SSLCertificateFile /etc/letsencrypt/live/domain.cloud/cert.pem
   SSLCertificateKeyFile /etc/letsencrypt/live/domain.cloud/priv-key.pem
   SSLCertificateChainFile /etc/letsencrypt/live/domain.cloud/chain.pem
</VirtualHost>

Der Aufruf über http funktioniert, der Aufruf über https gibt folgenden Fehler zurück:

domain.cloud hat eine ungültige Antwort gesendet ERR_SSL_PROTOCOL_ERROR

Was mache ich falsch?

Danke für jeden Input. Gruß Robin

Mokkujin

Anmeldungsdatum:
2. Mai 2008

Beiträge: 389

Wohnort: Hannover

Einfach mal so geschossen. Der Fehler ERR_SSL_PROTOCOL_ERROR kann mehrere Gründe haben.

  1. Deine System Zeit ist falsch (wird diese über ntp gesynct ?)

  2. Deine Firewall lässt den Port nicht durch (aber du hast ja geschrieben das forwarding gemacht hast das sollte es also nicht sein, AUSSER du hast noch eine FW auf deinem Server)

  3. Deine ports.conf hört einfach nicht auf 443

  4. vielleicht hast du auch noch schrott im Browser Cache kann auch manchmal dafür sorgen das der Fehler auftritt

SSL Cipher muss das nicht in ' eingeschlossen werden ? Hab jetzt mal die von einem Server von mir genommen

1
2
3
4
5
SSLEngine on
SSLCompression off
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite 'EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA:EECDH:EDH+AESGCM:EDH:+3DES:ECDH+AESGCM:ECDH+AES:ECDH:AES:HIGH:MEDIUM:!RC4:!CAMELLIA:!SEED:!aNULL:!MD5:!eNULL:!LOW:!EXP:!DSS:!PSK:!SRP'

müsste ja dann in deinem Fall so aussehen.

1
2
3
4
5
6
7
8
SSLEngine on
SSLCompression off
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite 'EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA:EECDH:EDH+AESGCM:EDH:+3DES:ECDH+AESGCM:ECDH+AES:ECDH:AES:HIGH:MEDIUM:!RC4:!CAMELLIA:!SEED:!aNULL:!MD5:!eNULL:!LOW:!EXP:!DSS:!PSK:!SRP'
SSLCertificateFile /etc/letsencrypt/live/domain.cloud/cert2.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domain.cloud/privkey2.pem
SSLCertificateChainFile /etc/letsencrypt/live/domain.cloud/chain2.pem

du kannst auch mal probieren das andere chain File zu verwenden, weiss jetzt nicht wie letsencrypt das aufbaut

1
SSLCertificateChainFile /etc/letsencrypt/live/domain.cloud/fullchain2.pem

Vielleicht hilft dir das weiter https://thomas-leister.de/anleitung-fuer-lets-encrypt-kostenlose-tls-zertifikate-fuer-alle/

verdooft

Anmeldungsdatum:
15. September 2012

Beiträge: 4413

Bei mir sind die Ciphers nicht in ' eingeschlossen und Letsencrypt ist so funktionsfähig in den Hosts:

SSLCertificateFile      /etc/letsencrypt/live/www.domain.de/fullchain.pem
SSLCertificateKeyFile   /etc/letsencrypt/live/www.domain.de/privkey.pem

Mokkujin

Anmeldungsdatum:
2. Mai 2008

Beiträge: 389

Wohnort: Hannover

Habe gerade mal nachgesehen , SSLCipher muss nicht in ' eingeschlossen sein. Laut dem Link ist die Lösung von verdooft die richtige ☺

Also müsste das dann so funktionieren

1
2
3
4
5
6
7
SSLEngine on
SSLCompression off
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite 'EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA:EECDH:EDH+AESGCM:EDH:+3DES:ECDH+AESGCM:ECDH+AES:ECDH:AES:HIGH:MEDIUM:!RC4:!CAMELLIA:!SEED:!aNULL:!MD5:!eNULL:!LOW:!EXP:!DSS:!PSK:!SRP'
SSLCertificateFile      /etc/letsencrypt/live/domain.cloud/fullchain2.pem
SSLCertificateKeyFile   /etc/letsencrypt/live/domain.cloud/privkey2.pem

Mokkujin

Anmeldungsdatum:
2. Mai 2008

Beiträge: 389

Wohnort: Hannover

Wenn du fertig bist kannst du deine Einrichtung dann mit https://www.ssllabs.com/ssltest/ überprüfen.

nobody2311

Anmeldungsdatum:
28. August 2016

Beiträge: 80

kleiner Zusatz, weil bei https://www.ssllabs.com/ssltest/ nur der Port 443 möglich ist:

Unter https://www.htbridge.com/ssl/ kann man das SSL Zertifikat auch auf anderen Ports testen, wenn man mehrere Webseiten auf unterschiedlichen Ports testen möchte (z.B. Wordpress auf Port 443 und Own-/Nextcloud auf Port 5000)

Antworten |