การตั้งค่า SSLCipherSuite ใน Apache สำหรับรองรับ TLS 1.0, 1.1 และ 1.2


8

ฉันมีเว็บเซิร์ฟเวอร์ Apache 2.4.7 ที่ใช้ชื่อโดเมนหลายชื่อโดยใช้ที่อยู่ IP เดียว เนื่องจากช่องโหว่ของพุดเดิ้ลฉันเพิ่มSSLCipherSuiteบรรทัดต่อไปนี้ มันใช้งานได้ดีอยู่พักหนึ่ง แต่ผู้ใช้รายงานปัญหาในการเข้าถึงหน้าเว็บใน Firefox ขอให้ผู้ใช้เปลี่ยนเบราว์เซอร์ไม่ใช่ตัวเลือกดังนั้นฉันต้องเปลี่ยนการตั้งค่าเพื่อรองรับ TLS 1.0, 1.1 และ 1.2

การตั้งค่าปัจจุบันคือ:

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

หากเราดูการทดสอบของ Qualysเราจะเห็นว่าเซิร์ฟเวอร์รองรับ TLS 1.2 เท่านั้น

การตั้งค่าที่เหมาะสมสำหรับการเปิดใช้งาน TLS 1.0, TLS 1.1 และ TLS 1.2 คืออะไรดังนั้นไซต์สามารถรองรับเบราว์เซอร์รุ่นเก่าและรักษาความปลอดภัยในระดับที่เหมาะสม

คำตอบ:


13

การกำหนดค่าต่อไปนี้คือ (หรือเคยเป็น) การกำหนดค่าที่ดีที่สุดตาม 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"

อย่างไรก็ตามจะยกเว้นเบราว์เซอร์รุ่นเก่าทั้งหมด (รวมถึง Opera Mini!) เนื่องจากไม่มีชุดรหัสที่ไม่ใช่ PFS และ RC4 คุณสามารถผนวกต่อไปนี้ (ก่อนที่จะปิดการอ้างถึงแน่นอน) เพื่อเปิดใช้งาน RC4 รวมถึงการย้อนกลับ (รายการสุดท้าย) ไปยัง RC4 โดยไม่มี PFS:

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

คุณควรสนับสนุนให้ผู้ใช้อัปเกรด ASAP RC4 นั้นใช้งานไม่ได้และไม่ควรใช้อีกต่อไปโดยเฉพาะถ้าไม่มี PFS

เพื่อให้ได้เกรดที่ดีขึ้นให้ส่งส่วนหัว HSTS (เพื่อให้สามารถใช้งานได้คุณต้องเปิดใช้งานmod_header):

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

การกำหนดค่านี้จะไม่ทำงานสำหรับ Apache <2.2.26 เนื่องจากไม่รองรับการเข้ารหัสแบบ Elliptic-curve

อัปเดต :
เพิ่งตรวจสอบมันยังดีสำหรับ A + :) ฉันเชื่อว่านี่ต้องใช้ใบรับรองกับ SHA256

อัปเดตตุลาคม 2558 :
เมื่อเร็ว ๆ นี้ฉันพบเครื่องกำเนิดอื่นสำหรับการกำหนดค่า SSL ที่จัดทำโดย Mozilla มันสั่งให้เลขศูนย์เพื่อให้ Chrome ไม่ได้บอกว่าคุณกำลังใช้ชุดรหัสที่เลิกใช้แล้ว


3

ฉันพบคำแนะนำนี้ใน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)" 

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

การปิดใช้งานชุดเข้ารหัส SSLv3 จะปิดใช้งานชุดเข้ารหัสทั้งหมดที่เปิดตัวด้วย SSL3.0 เนื่องจากชุดรหัสยันต์เหล่านี้ยังใช้กับรุ่น SSL ในภายหลัง (TLS1.0 +) และชุดรหัสใหม่ส่วนใหญ่ถูกนำมาใช้กับ TLS1.2 การตั้งค่านี้ทำให้ TLS1.0 และ TLS1.1 ใช้งานไม่ได้เนื่องจากไม่มีการเข้ารหัสร่วม ดังนั้นโปรโตคอลจึงถูก จำกัด ที่ TLS1.2 อย่างมีประสิทธิภาพ

หากคุณจะโทรopenssl ciphers -V <cipher>ด้วยสายอักขระตัวเลขของคุณคุณจะเห็นว่าการเข้ารหัสที่มีอยู่ทั้งหมดต้องใช้ TLS1.2

ตัวอย่างเช่นopenssl ciphers -V TLSv1.2.


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.