ขณะนี้ เรามีชุดรหัสด้านล่างที่ใช้ในแพลตฟอร์มของเรา

AES128-GCM-SHA256

AES128-SHA256

AES128-ชา

ECDHE-RSA-AES128-GCM-SHA256

ECDHE-RSA-AES128-SHA256

ECDHE-RSA-AES128-SHA

หลังการสแกนความปลอดภัย ทีมงานได้ขอให้เราบล็อกชุดการเข้ารหัสแบบคงที่ด้านล่าง

AES128-GCM-SHA256

AES128-SHA256

AES128-ชา

เราได้บล็อกชุดการเข้ารหัสดังกล่าวผ่าน JDK พื้นฐาน (ใช้โดยเซิร์ฟเวอร์แอปของเรา) โดยอัปเดตส่วนอัลกอริทึม tls.disabled ในไฟล์ java.security

สิ่งนี้จะบล็อกรหัสลับด้านล่างเช่นกัน เนื่องจากชุดรหัสที่ถูกบล็อกด้านบนนั้นใช้ในส่วนการแลกเปลี่ยนคีย์/MAC ของชุดรหัสด้านล่าง

ECDHE-RSA-AES128-GCM-SHA256

ECDHE-RSA-AES128-SHA256

ECDHE-RSA-AES128-SHA

โปรดแนะนำว่ามีวิธีบล็อกเฉพาะ AES โดยไม่บล็อก ECDHE ด้วย AES หรือไม่

answer

คุณอาจไม่เข้าใจ แต่ชุดรหัสที่ OpenSSL สำหรับป้ายกำกับลูกเกดตีโพยตีพายที่มีชื่อที่ไม่ได้ระบุการแลกเปลี่ยนคีย์นั้นใช้การแลกเปลี่ยนคีย์ RSA (aka ธรรมดา-RSA) ชื่อ OpenSSL เหล่านั้น (ดู man ciphers ในส่วนที่ 1 หรืออาจเป็น 1ssl หรือคล้ายกัน ในระบบของคุณหรือบนเว็บไซต์ ) ที่ตรงกับชื่อมาตรฐานเหล่านี้:

AES128-GCM-SHA256  TLS_RSA_WITH_AES_128_GCM_SHA256
AES128-SHA256      TLS_RSA_WITH_AES_128_CBC_SHA256
AES128-SHA         TLS_RSA_WITH_AES_128_CBC_SHA

ไวยากรณ์สำหรับ secprop jdk.tls.disabledAlgorithmsรองรับเฉพาะอัลกอริธึมส่วนบุคคล ไม่ใช่ชุดค่าผสม ซึ่งน้อยกว่าชุดค่าผสมที่ซับซ้อนน้อยกว่ามาก เช่น "RSA ไม่ใช่ ECDHE" อย่างไรก็ตาม คุณสามารถปิดใช้งานการเข้ารหัส TLS โดยใช้ชื่อ (เต็ม) ที่ Java ใช้ ซึ่งเป็นชื่อมาตรฐานดังที่กล่าวไว้ข้างต้น ดังนั้นเพียงแค่ใส่ชื่อเหล่านั้นเป็นรายการที่คั่นด้วยเครื่องหมายจุลภาคใน secprop

หมายเหตุใน TLS1.3 (ใช้งานใน Java 11) ชุดการเข้ารหัสจะไม่เลือกวิธีการแลกเปลี่ยนคีย์และการตรวจสอบสิทธิ์อีกต่อไป อย่างไรก็ตาม 1.3 ไม่รองรับการแลกเปลี่ยนคีย์ RSA ธรรมดาที่ไม่ใช่ PFS อีกต่อไป และเนื่องจากดูเหมือนว่านั่นคือสิ่งที่ 'ทีม' ของคุณพยายามหลีกเลี่ยง ค่าเริ่มต้นสำหรับ 1.3 จึงน่าจะดีสำหรับคุณ