SSL erhielt einen schwachen ephemeren Diffie-Hellman-Schlüssel: So lösen Sie dieses Problem
In einigen Fällen, z. B. wenn das SSL-Zertifikat nicht korrekt auf dem Server installiert ist, wird folgende Warnmeldung im Browser angezeigt: „An error has occurred while connecting to www.site.com.“ SSL hat einen schwachen ephemeren Diffie-Hellman-Schlüssel in der Handshake-Nachricht „Exchange keys server“ erhalten. (Fehlercode: ssl_error_weak_server_ephemeral_dh_key).
- Die Seite, die Sie zu öffnen versuchen, kann nicht angezeigt werden, da die Authentizität der empfangenen Daten nicht überprüft werden konnte.
- Bitte setzen Sie sich mit den Eigentümern der Website in Verbindung, um sie über dieses Problem zu informieren.
Der Grund für dieses Problem ist, dass der Server versucht, eine sichere Verbindung mit einem schwachen Verschlüsselungsschlüssel (weniger als 1024 Bit) herzustellen. Die empfohlene Größe des Verschlüsselungsschlüssels beträgt 2048 Bit. Um einen besseren Verschlüsselungsschlüssel zu erzeugen, nutzen Sie am besten OpenSSL:
Openssl dhparam -out dhparams.pem 2048
Um das Problem mit verschiedenen Servern zu lösen, müssen Sie die folgenden Schritte ausführen:
1.Legen Sie sichere Verschlüsselungssätze fest.
2.Definieren Sie die entsprechenden Parameter für den Diffie-Hellman-Algorithmus.
Lösung für Apache:
SSL-Parameter können global in der Datei httpd.conf oder in bestimmten virtuellen Hosts definiert werden.
Verschlüsselungssätze
Deaktivieren Sie die Unterstützung für SSLv2 und SSLv3 und aktivieren Sie die TLS-Unterstützung, indem Sie bestimmte Verschlüsselungssammlungen in der angegebenen Reihenfolge ausdrücklich zulassen bzw. deaktivieren:
SSLProtocol all -SSLv2 -SSLv3
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
SSLHonorCipherOrder on
Diffie-Hellman-Parameter:
In neueren Versionen von Apache (2.4.8 und höher) sowie OpenSSL 1.0.2 und höher können Sie direkt eine Datei mit Diffie-Hellman-Parametern angeben:
SSLOpenSSLConfCmd DHParameters "{path to dhparams.pem}"
Wenn Sie Apache mit LibreSSL verwenden oder mit Versionen von Apache 2.4.7 oder OpenSSL 0.9.8a oder höher arbeiten, können Sie die zuvor generierten Diffie-Hellman-Parameter an das Ende Ihrer Zertifikatsdatei anfügen.
Konfigurations-Reset durchführen:
Sudo service apache2 reload
Die Lösung für Nginx
Fügen Sie im Server-Block in der Site-Konfiguration (/etc/nginx/sites-enabled/default) Folgendes hinzu:
Verschlüsselungssätze:
ssl_ciphers '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';
ssl_prefer_server_ciphers on;
Diffie-Hellman-Parameter
Ssl_dhparam {path to dhparams.pem}
Konfiguration neu laden:
Sudo nginx -s reload
Microsoft IIS
1. Öffnen Sie den „Group Policy Object Editor“ (Editor für lokale Gruppenrichtlinien) (führen Sie gpedit.msc in der Befehlszeile aus).
2. Gehen Sie zu „Computer Configuration“ (Computerkonfiguration), „Administrative Templates“ (Administrative Vorlagen), „Network“ (Netzwerk) und klicken Sie dann auf „SSL Configuration Settings“ (SSL-Konfigurationseinstellungen).
3. Öffnen Sie im Abschnitt „SSL Configuration Settings“ (SSL-Konfigurationseinstellungen) den Parameter „SSL Cipher Suite Order“ (Reihenfolge der Verschlüsselungssammlungen).
4. Legen Sie stabile Verschlüsselungssammlungen fest. Die Liste der Verschlüsselungssammlungen kann auf der Microsoft-Website oder auf der Mozilla-Seite eingesehen werden.
Lighttpd
Es werden Änderungen an /etc/lighttpd/lighttpd.conf vorgenommen.
Verschlüsselungssätze:
ssl.cipher-list = "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 "
Diffie-Hellman-Parameter
Ssl.dh-file = "{path to dhparams.pem}"
Konfiguration zurücksetzen:
Sudo service lighttpd restart
Apache Tomcat
In der Datei server.xml (für JSSE)
Verschlüsselungssätze:
<Connector
ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_DSS_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_SHA256,TLS_ECDHE_RSA_WITH_AES_128_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_SHA,TLS_ECDHE_RSA_WITH_AES_256_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_SHA384,TLS_ECDHE_RSA_WITH_AES_256_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_SHA,TLS_DHE_RSA_WITH_AES_128_SHA256,TLS_DHE_RSA_WITH_AES_128_SHA,TLS_DHE_DSS_WITH_AES_128_SHA256,TLS_DHE_RSA_WITH_AES_256_SHA256,TLS_DHE_DSS_WITH_AES_256_SHA,TLS_DHE_RSA_WITH_AES_256_SHA"
/>
Anmerkung: Um AES 256-Bit-Verschlüsselungssammlungen zu verwenden, müssen Sie JCE Unlimited Strength Jurisdiction Policy Files installieren. Diese finden Sie unter folgendem Link.
Postfix SMTP
Beide Parameter müssen in /etc/postfix/main.cf angegeben werden.
Verschlüsselungssätze:
smtpd_tls_exclude_ciphers = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CBC3-SHA, KRB5-DES, CBC3-SHA
Diffie-Hellman-Parameter
smtpd_tls_dh1024_param_file = ${config_directory}/dhparams.pem
Konfiguration zurücksetzen:
sudo postfix reload
Sendmail
Änderungen können im Abschnitt LOCAL_CONFIG der Datei /etc/mail/sendmail.mc vorgenommen werden.
Verschlüsselungssätze:
O CipherList=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
Diffie-Hellman-Parameter
O DHParameters={path to dhparams.pem}
Konfiguration zurücksetzen:
sudo service sendmail restart
Dovecot
Änderungen können in /etc/dovecot.conf vorgenommen werden.
Verschlüsselungssätze:
ssl_cipher_list=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
ssl_prefer_server_ciphers = yes (Dovecot 2.2.6 oder höher)
Diffie-Hellman-Parameter:
#regenerates every week
ssl_dh_parameters_length = 2048
Konfiguration zurücksetzen:
sudo doveadm reload
HAProxy
Änderungen werden im globalen Abschnitt der Konfiguration vorgenommen.
Verschlüsselungssätze:
ssl-default-bind-ciphers 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
Diffie-Hellman-Parameter:
Fügen Sie am Ende der .crt-Datei den mit OpenSSL generierten Diffie-Hellman-Parameter hinzu.
Anmerkung: Trotz der Option tune.ssl.default-dh-param, mit der Sie die maximale Größe der für DHE verwendeten Primzahlen festlegen können, werden diese Werte durch die Angabe beliebiger Parameter in Ihrer Zertifikatsdatei überschrieben.
Konfiguration zurücksetzen:
sudo haproxy -f haproxy.cfg -p $(</var/run/haproxy-private.pid) -st $(</var/run/haproxy-private.pid)
Amazon Elastic Load Balancing
Der letzte Satz vordefinierter SSL-Parameter (2015-05) verwendet ECDHE-Verschlüsselungssammlungen statt DHE, da diese gegen LogJam-Angriffe resistent sind. Einzelheiten finden Sie in der Dokumentation.
OpenSSH
Das SSH-Protokoll ist vor LogJam-Angriffen geschützt, bei denen ein Angreifer eine Verbindung auf eine schwächere Kryptographie umstellen kann. Viele SSH-Implementierungen, einschließlich OpenSSH, verwenden jedoch Primzahlen, zum Beispiel 1024-Bit Oakley Group 2. Es gibt jedoch mehrere Möglichkeiten, dieses Problem zu lösen. Die erste und einfachste Methode besteht darin, Kunden dazu zu bringen, den Diffie-Hellman-Algorithmus auf elliptischen Kurven zu verwenden. Insbesondere Curve25519. Dazu müssen Sie Algorithmen für den Schlüsselaustausch festlegen:
KexAlgorithms curve25519-sha256@libssh.org
Wenn Sie weiterhin den nicht-elliptischen Diffie-Hellman-Algorithmus unterstützen möchten, müssen Sie die Unterstützung für Group 1 deaktivieren, indem Sie diffie-hellman-group1-sha1 entfernen. Sie können die Gruppe diffie-hellman-group14-sha1 behalten, da sie 2038-Bit-Primzahlen verwendet.
Sie können auch neue Diffie-Hellman-Gruppen erstellen:
ssh-keygen -G moduli-2048.candidates -b 2048
ssh-keygen -T moduli-2048 -f moduli-2048.candidates
Sie müssen dann moduli-2048 in die moduli-Datei Ihres Systems installieren. Bei Debian/Ubuntu befindet sie sich unter /etc/ssh/moduli. SSH wählt (nach dem Zufallsprinzip) die Gruppen aus dieser Datei aus, so dass Sie neue generierte Gruppen in die moduli-Datei aufnehmen und die alten entfernen müssen.
Sollten Sie weitere Fragen oder Bedenken haben, wenden Sie sich bitte an das Support-Team von LeaderTelecom. Die Kontaktinformationen finden Sie auf der Website.