Cài đặt SSLCodesSuite trong Apache để hỗ trợ TLS 1.0, 1.1 và 1.2


8

Tôi có một máy chủ web Apache 2.4.7 chạy nhiều tên miền bằng một địa chỉ IP duy nhất. Do lỗ hổng Poodle, tôi đã thêm SSLCipherSuitedòng sau . Nó hoạt động tốt trong một thời gian, nhưng người dùng đang báo cáo sự cố khi truy cập trang trong Firefox. Rất tiếc, việc yêu cầu người dùng chuyển đổi trình duyệt không phải là một tùy chọn, vì vậy tôi cần thay đổi cài đặt để hỗ trợ TLS 1.0, 1.1 và 1.2.

Các cài đặt hiện tại là:

<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>

Nếu chúng ta xem xét nghiệm của Qualys , chúng ta sẽ thấy rằng máy chủ chỉ hỗ trợ TLS 1.2.

Các cài đặt thích hợp sẽ là gì để bật TLS 1.0, TLS 1.1 và TLS 1.2, để trang web có thể hỗ trợ các trình duyệt cũ hơn và cũng duy trì mức bảo mật tốt?

Câu trả lời:


13

Cấu hình sau đây là (hoặc được sử dụng) là cấu hình tốt nhất theo 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"

Tuy nhiên, nó sẽ loại trừ tất cả các trình duyệt cũ hơn (bao gồm cả Opera Mini!), Vì nó thiếu các bộ mật mã không phải PFS và RC4. Tất nhiên, bạn có thể nối các phần sau (trước khi trích dẫn kết thúc) để kích hoạt RC4, bao gồm dự phòng (mục cuối cùng) cho RC4 mà không cần PFS:

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

Bạn nên khuyến khích người dùng nâng cấp ASAP. RC4 bị hỏng và không còn được sử dụng, đặc biệt là không có PFS.

Để đạt được điểm tốt hơn, cũng gửi tiêu đề HSTS (để điều này hoạt động, bạn cần bật mod_header):

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

Cấu hình này sẽ không hoạt động cho Apache <2.2.26, vì nó không hỗ trợ mã hóa đường cong Elliptic.

Cập nhật :
Chỉ cần kiểm tra, nó vẫn tốt cho A +. :) Tôi tin rằng điều này đòi hỏi một chứng chỉ với SHA256, mặc dù.

Cập nhật tháng 10 năm 2015 :
Gần đây tôi đã tìm thấy một trình tạo khác cho cấu hình SSL , được cung cấp bởi Mozilla. Nó yêu cầu mật mã để Chrome không nói rằng bạn đang sử dụng bộ mật mã không dùng nữa.


3

Tôi đã tìm thấy đề xuất này trên Codesli.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)" 

3
 SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-SSLv3:-EXP:!kEDH
                                                           ^^^^^^^^

Vô hiệu hóa bộ mật mã SSLv3 sẽ vô hiệu hóa tất cả các bộ mật mã được giới thiệu với SSL3.0. Vì các bộ mật mã này cũng được sử dụng với các phiên bản SSL sau này (TLS1.0 +) và các bộ mật mã mới chủ yếu được giới thiệu với TLS1.2, cài đặt này làm cho TLS1.0 và TLS1.1 không khả dụng do không có mật mã dùng chung. Do đó, giao thức được giới hạn hiệu quả trong TLS1.2.

Nếu bạn gọi openssl ciphers -V <cipher>bằng chuỗi mật mã bạn sẽ thấy, tất cả các mật mã có sẵn đều yêu cầu TLS1.2.

Ví dụ : openssl ciphers -V TLSv1.2.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.