Το SSL έλαβε ένα αδύναμο παροδικό κλειδί Diffie-Hellman: τρόπος επίλυσης αυτού του προβλήματος
Σε ορισμένες περιπτώσεις, όπως όταν το πιστοποιητικό SSL δεν έχει εγκατασταθεί σωστά στον διακομιστή, θα εμφανιστεί το ακόλουθο μήνυμα προειδοποίησης στο πρόγραμμα περιήγησης: παρουσιάστηκε ένα σφάλμα κατά τη σύνδεση στο www.site.com. Το SSL έλαβε ένα αδύναμο παροδικό κλειδί Diffie-Hellman στο μήνυμα χειραψίας "Exchange keys server." (Κωδικός σφάλματος: ssl_error_weak_server_ephemeral_dh_key).
- Η σελίδα που προσπαθείτε να ανοίξετε δεν μπορεί να εμφανιστεί, επειδή η αυθεντικότητα των δεδομένων που λήφθηκαν δεν ήταν δυνατό να επαληθευτεί.
- Επικοινωνήστε με τους κατόχους των τοποθεσιών web, για να τους συμβουλεύσετε σχετικά με αυτό το πρόβλημα.
Η αιτία αυτού του προβλήματος είναι ότι ο διακομιστής προσπαθεί να δημιουργήσει μια ασφαλή σύνδεση χρησιμοποιώντας ένα αδύναμο κλειδί κρυπτογράφησης (με λιγότερα από 1024 bit). Το προτεινόμενο μέγεθος του κλειδιού κρυπτογράφησης είναι 2048 bit. Ο πιο εύκολος τρόπος για να δημιουργηθεί αυτό το είδος βελτιωμένου κλειδιού κρυπτογράφησης είναι η χρήση OpenSSL:
Openssl dhparam -out dhparams.pem 2048
Για την επίλυση του προβλήματος με διαφορετικούς διακομιστές, πρέπει να ακολουθήσετε τα παρακάτω βήματα:
- Καθορίστε σύνολα ασφαλούς κρυπτογράφησης
- Ορίστε τις κατάλληλες παραμέτρους για τον αλγόριθμο Diffie-Hellman
Λύση για Apache:
Οι παράμετροι SSL μπορούν να οριστούν καθολικά στο αρχείο httpd.conf ή σε συγκεκριμένους εικονικούς κεντρικούς υπολογιστές.
Σύνολα κρυπτογράφησης
Απενεργοποιήστε την υποστήριξη SSLv2 και SSLv3 και ενεργοποιήστε την υποστήριξη TLS επιτρέποντας ρητά / απενεργοποιώντας συγκεκριμένες κρυπτογραφήσεις με την καθορισμένη σειρά:
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:
Στις πρόσφατες εκδόσεις του Apache (2.4.8 και νεότερες), καθώς και του OpenSSL 1.0.2 και σε νεότερες εκδόσεις, μπορείτε να καθορίσετε απευθείας ένα αρχείο με παραμέτρους Diffie-Hellman:
SSLOpenSSLConfCmd DHParameters "{path to dhparams.pem}"
Εάν χρησιμοποιείτε το Apache με το LibreSSL ή δουλεύετε με εκδόσεις του Apache 2.4.7 ή του OpenSSL 0.9.8a ή νεότερες εκδόσεις, μπορείτε να προσθέσετε τις παραμέτρους Diffie-Hellman που δημιουργήθηκαν νωρίτερα στο τέλος του αρχείου πιστοποιητικού σας.
Πραγματοποιήστε την επαναφορά ρύθμισης παραμέτρων:
Sudo service apache2 reload
Η λύση για το Nginx
Στο μπλοκ διακομιστή, στη ρύθμιση παραμέτρων τοποθεσίας, (/etc/nginx/sites-enabled/default) προσθέστε τα εξής:
Σύνολα κρυπτογράφησης:
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
Ssl_dhparam {path to dhparams.pem}
Φορτώστε ξανά τη ρύθμιση παραμέτρων:
Sudo nginx -s reload
Microsoft IIS
1. Ανοίξτε το Πρόγραμμα επεξεργασίας αντικειμένου πολιτικής ομάδας (εκτελέστε gpedit.msc στη γραμμή εντολών).
2. Μεταβείτε στις επιλογές "Ρυθμίσεις υπολογιστή", "Πρότυπα διαχείρισης", "Δίκτυο" και, στη συνέχεια, κάντε κλικ στην επιλογή "Ρυθμίσεις παραμέτρων SSL".
3. Στην ενότητα "Ρυθμίσεις παραμέτρων SSL", ανοίξτε την παράμετρο "Σειρά ταξινόμησης προγραμμάτων κρυπτογράφησης SSL"
4. Ορίστε σταθερές κρυπτογραφήσεις. Μπορείτε να ελέγξετε τη λίστα κρυπτογραφήσεων στην τοποθεσία web της Microsoft ή στη σελίδα του Mozilla.
Lighttpd
Πραγματοποιούνται αλλαγές στο /etc/lighttpd/lighttpd.conf.
Σύνολα κρυπτογράφησης:
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
Ssl.dh-file = "{path to dhparams.pem}"
Επαναφέρετε τη ρύθμιση παραμέτρων:
Sudo service lighttpd restart
Apache Tomcat
Στο αρχείο .xml διακομιστή (για JSSE)
Σύνολα κρυπτογράφησης:
<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"
/>
Σημείωση: Για να χρησιμοποιήσετε κρυπτογραφήσεις AES 256-bit, πρέπει να εγκαταστήσετε το JCE Unlimited Strength Jurisdiction Policy Files. Μπορείτε να το βρείτε στον παρακάτω σύνδεσμο.
Postfix SMTP
Και οι δύο παράμετροι πρέπει να καθοριστούν στο /etc/postfix/main.cf.
Σύνολα κρυπτογράφησης:
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
smtpd_tls_dh1024_param_file = ${config_directory}/dhparams.pem
Επαναφέρετε τη ρύθμιση παραμέτρων:
sudo postfix reload
Sendmail
Μπορούν να πραγματοποιηθούν αλλαγές στην ενότητα LOCAL_CONFIG του αρχείου /etc/mail/sendmail.mc
Σύνολα κρυπτογράφησης:
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';
Παράμετροι Diffie-Hellman
O DHParameters={path to dhparams.pem}
Επαναφέρετε τη ρύθμιση παραμέτρων:
sudo service sendmail restart
Dovecot
Μπορούν να πραγματοποιηθούν αλλαγές στο /etc/dovecot.conf
Σύνολα κρυπτογράφησης:
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 ή νεότερη έκδοση)
Παράμετροι Diffie-Hellman:
#επαναλαμβάνει τη δημιουργία κάθε εβδομάδα
ssl_dh_parameters_length = 2048
Επαναφέρετε τη ρύθμιση παραμέτρων:
sudo doveadm reload
HAProxy
Πραγματοποιούνται αλλαγές στο καθολικό τμήμα της ρύθμισης παραμέτρων.
Σύνολα κρυπτογράφησης:
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:
Προσθέστε στο κάτω μέρος του αρχείου .crt file με την παράμετρο Diffie-Hellman που δημιουργείται με OpenSSL.
Σημείωση: παρά την επιλογή tune.ssl.default-dh-param, η οποία σάς δίνει τη δυνατότητα να καθορίσετε το μέγιστο μέγεθος των πρώτων αριθμών που χρησιμοποιούνται για το DHE, η τοποθέτηση τυχαίων παραμέτρων στο αρχείο πιστοποιητικού σας θα αντικαταστήσει αυτές τις τιμές.
Επαναφέρετε τη ρύθμιση παραμέτρων:
sudo haproxy -f haproxy.cfg -p $(</var/run/haproxy-private.pid) -st $(</var/run/haproxy-private.pid)
Amazon Elastic Load Balancing
Το τελευταίο σύνολο προκαθορισμένων παραμέτρων SSL (2015-05) χρησιμοποιεί κρυπτογραφήσεις ECDHE και όχι DHE, οι οποίες είναι ανθεκτικές σε επιθέσεις LogJam. Μπορείτε να βρείτε λεπτομέρειες στην τεκμηρίωση.
OpenSSH
Το πρωτόκολλο SSH προστατεύεται από επιθέσεις LogJam, όταν κάποιος εισβολέας μπορεί να αλλάξει μια σύνδεση σε μια πιο αδύναμη κρυπτογράφηση. Ωστόσο, πολλές υλοποιήσεις SSH, συμπεριλαμβανομένου του OpenSSH, χρησιμοποιούν πρώτους αριθμούς, για παράδειγμα 1024-bit Oakley Group 2. Υπάρχουν, πάντως, αρκετοί τρόπο για την επίλυση αυτού του προβλήματος. Η πρώτη και απλούστερη μέθοδος είναι η χρήση από τους πελάτες του αλγόριθμου Diffie-Hellman σε ελλειπτικές καμπύλες. Ειδικότερα, στην καμπύλη Curve25519. Αυτό μπορείτε να το κάνετε ορίζοντας αλγόριθμους ανταλλαγής κλειδιών:
KexAlgorithms curve25519-sha256@libssh.org
Εάν θέλετε να συνεχίσετε να υποστηρίζετε τον μη ελλειπτικό αλγόριθμο Diffie-Hellman, πρέπει να απενεργοποιήσετε την υποστήριξη της Ομάδας 1 καταργώντας το diffie-hellman-group1-sha1. Μπορείτε να αφήσετε το diffie-hellman-group14-sha1, το οποίο χρησιμοποιεί πρώτους αριθμούς 2038-bit.
Μπορείτε, επίσης, να δημιουργήσετε νέες ομάδες Diffie-Hellman:
ssh-keygen -G moduli-2048.candidates -b 2048
ssh-keygen -T moduli-2048 -f moduli-2048.candidates
Στη συνέχεια, θα πρέπει να εγκαταστήσετε το moduli-2048 στο αρχείο συντελεστών του συστήματός σας. Στο Debian / Ubuntu, βρίσκεται στο /etc/ssh/moduli. Το SSH επιλέγει (με τυχαίο τρόπο) τις ομάδες από αυτό το αρχείο, επομένως στο αρχείο συντελεστών πρέπει να προσθέσετε ομάδες που δημιουργήθηκαν πρόσφατα και να καταργήσετε τις παλιές.
Σε περίπτωση που έχετε περαιτέρω ερωτήσεις ή προβληματισμούς, μην διστάσετε να επικοινωνήσετε με την ομάδα υποστήριξης της LeaderTelecom, χρησιμοποιώντας τα στοιχεία επικοινωνίας που παρέχονται στην τοποθεσία web.