ฉันจะปิดการใช้งาน TLS 1.0 และ 1.1 ใน apache ได้อย่างไร


31

ไม่มีใครรู้ว่าทำไมฉันไม่สามารถปิดใช้งาน tls 1.0 และ tls1.1 ได้ด้วยการอัปเดตการกำหนดค่านี้

SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 

หลังจากทำสิ่งนี้ฉันรีโหลด apache ฉันทำการสแกน ssl โดยใช้ ssllabs หรือเครื่องมือ comodo ssl และมันยังบอกว่ารองรับ tls 1.1 และ 1.0 ฉันต้องการลบสิ่งเหล่านี้หรือไม่

คำตอบ:


45

เมื่อคุณมีหลาย TLS VirtualHosts และใช้ชื่อเซิร์ฟเวอร์บ่งชี้ (SNI) มันเป็นไวยากรณ์ที่ได้รับอนุญาตให้มีSSLProtocol คำสั่งสำหรับแต่ละ VirtualHost แต่ถ้าคุณมี IP VirtualHosts ในทางปฏิบัติการตั้งค่าจากการเกิดขึ้นครั้งแรกของSSLProtocolคำสั่งจะใช้สำหรับเซิร์ฟเวอร์ทั้งหมด และ / หรือทั้งหมด VirtualHosts ชื่อตามสนับสนุน TLS 1

ดังนั้นให้ตรวจสอบตัวอย่างหลักของคุณhttpd.conf(และตัวอย่างทั้งหมดที่รวมอยู่ในรายการและสิ่งที่conf.d/*.confคล้ายกัน) เพื่อดูSSLProtocolคำสั่งเพิ่มเติม

ไวยากรณ์ของคุณถูกต้องแม้ว่าฉันจะเห็นด้วยกับคำตอบของ ezra-sว่าเมื่อคุณขยายallชวเลขคุณสามารถปรับปรุงได้เล็กน้อย:

 SSLProtocol +SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2 -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 

โดยใช้:

 SSLProtocol TLSv1.2

ทั้งหมดนี้สมเหตุสมผล แต่ฉันทำในสิ่งที่คุณแนะนำ ฉันทำไดเรกทอรี / etc / httpd ของฉันสำหรับการอ้างอิงทั้งหมดของ "SSLProtocol" ฉันอัปเดตเป็น SSLProtocol TLSv1.2 จากนั้นทำการรีสตาร์ทและยังคงแสดงว่ารองรับ tls 1.0 และ 1.1 ฉันยังลองใช้กับเซิร์ฟเวอร์ตัวอื่นและปัญหาเดียวกัน ความคิดใด ๆ
David

1
การเตือนที่ผิดพลาดนี่เป็นแคชจริง ๆ โดยรายงานของ comodo และ ssllabs ดูเหมือนว่าจะรายงานอย่างถูกต้องในขณะนี้ ขอขอบคุณ.
David

3
ฉันคิดว่าฉันแนะนำให้ใช้ "ทั้งหมด" กับลบสำหรับโปรโตคอลที่คุณไม่ต้องการ รุ่นอนาคตของ apache กำหนด "ทั้งหมด" แตกต่างกันไปตามมาตรฐานใหม่ที่ได้รับการพัฒนาและมาตรฐานเก่าพบว่าไม่ปลอดภัย
bobpaul

ถ้าคุณใช้ Letsencrypt อย่าลืมตรวจสอบ/etc/letsencrypt/options-ssl-apache.conf
Memes

9

ที่คุณระบุไว้เพียงพอแล้วมันไม่ควรแสดงโปรโตคอลอื่น ๆ จำ SSLLABS แคชการทดสอบล่าสุด แม้ว่าจะรู้ว่าไม่มีโปรโตคอลอื่นที่กำหนดไว้เหมือนที่คุณทำ แต่ก็เป็นเรื่องที่ซับซ้อน

ไม่ว่าในกรณีใดคุณสามารถใช้สิ่งนั้นหรือเพียง:

SSLProtocol TLSv1.2

มีความแตกต่างใด ๆ หากคุณระบุ-ALL +TLSv1.2?
Chazy Chaz

"ทั้งหมด" ขยายเป็น "+ SSLv3 + TLSv1 + TLSv1.1 + TLSv1.2" ฉันไม่เห็นประโยชน์ในการใช้ "- ทั้งหมด" ที่จริงแล้วจากเอกสารไม่ชัดเจนว่า "-all" เป็นไวยากรณ์ที่ถูกต้อง คุณสามารถทำโปรโตคอล [+/-] แต่ทั้งหมดไม่ใช่โปรโตคอล: httpd.apache.org/docs/2.4/mod/mod_ssl.html
bobpaul

6

ฉันกำลังดิ้นรนกับปัญหานี้เช่นกันการแก้ไขการกำหนดค่าด้วยSSLProtocolคำสั่งไม่ทำงาน ฉันลงเอยด้วยการเพิ่มสิ่งต่อไปนี้ในการกำหนดค่าโฮสต์เสมือนของฉัน:

SSLOpenSSLConfCmd Protocol "-ALL, TLSv1.2"

ซึ่งทำงานได้อย่างสมบูรณ์แบบ คุณสามารถอ่านเพิ่มเติมเกี่ยวกับSSLOpenSSLConfCmdคำสั่งที่นี่


4

ปิดใช้งานเวอร์ชัน TLS1.0 ใน Apache

หากคุณมีโฮสติ้งเสมือนหลายตัวคุณต้องอัปเดตไฟล์การกำหนดค่าทั้งหมดมิฉะนั้น ssl.conf ก็เพียงพอแล้ว

วิธีตรวจสอบเวอร์ชั่นที่รองรับ TSL:

# nmap --script ssl-enum-ciphers -p 443 192.168.11.10 | grep TLSv
|   TLSv1.0:
|   TLSv1.1:
|   TLSv1.2:

แก้ไขไฟล์คอนฟิกูเรชัน Apache vi /etc/httpd/conf.d/web.confลบ TLS ทั้งหมดและอนุญาต TLS1.2 เท่านั้น

SSLProtocol TLSv1.2

ตรวจสอบหลังจากการแก้ไข

# grep SSLProtocol /etc/httpd/conf.d/web.conf
SSLProtocol TLSv1.2

# nmap --script ssl-enum-ciphers -p 443 192.168.11.10 | grep TLSv
|   TLSv1.2:
# service httpd restart

-1

คุณต้องรีสตาร์ทบริการ Apache โดยใช้คำสั่งต่อไปนี้เพื่อสะท้อนถึงการเปลี่ยนแปลง

sudo service apache2 restart

รหัสด้านล่างนี้ใช้งานได้ดีสำหรับฉันคุณสามารถตรวจสอบบทความนี้เพื่อรับรายละเอียดเพิ่มเติม https://karthikekblog.com/how-to-disable-enable-ssl-tls-protocols-in-ubentu-apache-linux-server/ https://karthikekblog.com/

<VirtualHost *:443>
ServerName www.yourdomain.com
DocumentRoot /var/www/html
SSLEngine on
SSLProtocol +TLSv1.2
SSLCertificateFile /etc/apache2/certificates/certificate.crt
SSLCertificateKeyFile /etc/apache2/certificates/certificate.key 
SSLCertificateChainFile /etc/apache2/certificates/intermediate.crt
</VirtualHost>

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