Pengaturan SSLCipherSuite di Apache untuk mendukung TLS 1.0, 1.1 dan 1.2

8

Saya memiliki server web Apache 2.4.7 yang menjalankan beberapa nama domain menggunakan satu alamat IP. Sebagai hasil dari kerentanan Poodle, saya menambahkan SSLCipherSuitebaris berikut . Itu berfungsi dengan baik untuk sementara waktu, tetapi pengguna melaporkan masalah dengan mengakses halaman di Firefox. Meminta pengguna untuk beralih browser sayangnya bukan pilihan, jadi saya perlu mengubah pengaturan untuk mendukung TLS 1.0, 1.1 dan 1.2.

Pengaturan saat ini adalah:

<VirtualHost ZYX.XYZ.org:443>
DocumentRoot /var/www/ZYX.XYZ/www
ServerName ZYX.XYZ.org

<Directory "/var/www/ZYX.XYZ/">
  allow from all
  Options -Indexes
</Directory>

SSLEngine on
SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-SSLv3:-EXP:!kEDH
SSLCertificateFile /etc/apache2/ssl/XYZ.org.crt
SSLCertificateKeyFile /etc/apache2/ssl/XYZ.org.key
SSLCACertificateFile /etc/apache2/ssl/gd_bundle-g2-g1.crt
</VirtualHost>

Jika kita melihat tes Qualys , kita melihat bahwa server hanya mendukung TLS 1.2.

Apa pengaturan yang sesuai untuk mengaktifkan TLS 1.0, TLS 1.1 dan TLS 1.2, sehingga situs dapat mendukung browser yang lebih lama, dan juga menjaga tingkat keamanan yang layak?

Kristian
sumber

Jawaban:

13

Konfigurasi berikut ini (atau dulu) konfigurasi terbaik menurut SSLLabs:

SSLProtocol +TLSv1.2 +TLSv1.1 +TLSv1
SSLCompression off
SSLHonorCipherOrder on
SSLCipherSuite "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA"

Namun, itu akan mengecualikan semua browser lama (termasuk Opera Mini!), Karena tidak memiliki suite cipher non-PFS dan RC4. Anda dapat menambahkan yang berikut (sebelum kutipan penutup, tentu saja) untuk mengaktifkan RC4, termasuk fallback (entri terakhir) ke RC4 tanpa PFS:

:ECDHE-ECDSA-RC4-SHA:ECDHE-RSA-RC4-SHA:ECDH-ECDSA-RC4-SHA:ECDH-RSA-RC4-SHA:RC4-SHA

Anda harus mendorong pengguna untuk meningkatkan ASAP. RC4 rusak dan seharusnya tidak lagi digunakan, terutama tanpa PFS.

Untuk mencapai nilai yang lebih baik, kirim juga tajuk HSTS (agar ini berfungsi, Anda harus mengaktifkan mod_header):

Header always set Strict-Transport-Security "max-age=63072000;"

Konfigurasi ini tidak akan berfungsi untuk Apache <2.2.26, karena tidak mendukung kriptografi Elliptic-curve.

Pembaruan :
Baru diperiksa, masih bagus untuk A +. :) Saya percaya ini membutuhkan sertifikat dengan SHA256.

Pembaruan Oktober 2015 :
Baru-baru ini saya menemukan generator lain untuk konfigurasi SSL , yang disediakan oleh Mozilla. Ini memesan sandi sehingga Chrome tidak mengatakan Anda menggunakan rangkaian sandi yang sudah usang.

Daniel B
sumber
3

Saya menemukan rekomendasi ini di Cipherli.st :

SSLCipherSuite AES128+EECDH:AES128+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
# Requires Apache >= 2.4
SSLCompression off 
SSLUseStapling on 
SSLStaplingCache "shmcb:logs/stapling-cache(150000)" 
Kristian
sumber
3
 SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-SSLv3:-EXP:!kEDH
                                                           ^^^^^^^^

Menonaktifkan suite sandi SSLv3 menonaktifkan semua suite sandi yang diperkenalkan dengan SSL3.0. Karena cipher suite ini juga digunakan dengan versi SSL yang lebih baru (TLS1.0 +) dan cipher suite baru sebagian besar diperkenalkan dengan TLS1.2 pengaturan ini membuat TLS1.0 dan TLS1.1 tidak tersedia karena tidak ada cipher bersama. Dengan demikian protokol secara efektif dibatasi untuk TLS1.2.

Jika Anda akan memanggil openssl ciphers -V <cipher>dengan string sandi Anda, Anda akan melihat, bahwa semua sandi yang tersedia memerlukan TLS1.2.

Sebagai contoh: openssl ciphers -V TLSv1.2.

Steffen Ullrich
sumber
0

Lihat Petunjuk SSLOpenSSLConfCmd di konfigurasi Apache 2.4 .

SSLOpenSSLConfCmd Protocol "-ALL, TLSv1.2"

James B
sumber