Score:0

จะปิดการใช้งานบรรทัดใน java.security เพื่อหลีกเลี่ยง javax.net.ssl.SSLHandshakeException ได้อย่างไร

ธง ng

ฉันต้องปิดการใช้งานบรรทัดต่อไปนี้ใน java.security ไฟล์ (จาวา 8 SE):

jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
   ขนาดคีย์ DH < 1024, ขนาดคีย์ EC < 224, 3DES_EDE_CBC, อานนท์, NULL, \
   รวมถึง jdk.disabled.namedCurves

ในหน้าต่าง

รูปภาพใน Windows

เส้นทาง Windows: โปรแกรม Files\Java\jre1.8.0_301\lib\security\java.security

จุดประสงค์ของการปิดใช้งานบรรทัดเหล่านี้คือเพื่อหลีกเลี่ยงข้อความแสดงข้อผิดพลาดต่อไปนี้:

ข้อผิดพลาด: javax.net.ssl.SSLHandshakeException: ไม่มีโปรโตคอลที่เหมาะสม 
(โปรโตคอลถูกปิดใช้งานหรือชุดรหัสไม่เหมาะสม)

และเผยแพร่ข้อเสนอการแก้ปัญหา ที่นี่ (ซึ่งก็คือการแสดงความคิดเห็นในบรรทัดเหล่านี้)

ฉันไม่แน่ใจว่าการใส่ความคิดเห็นที่จุดเริ่มต้นของบรรทัด (#) จะปิดใช้งานทั้งสองระบบปฏิบัติการหรือไม่ เพราะ เอกสารออราเคิลนี้ พูดเป็น //

ไม่ว่าบรรทัดใดจะถูกใช้เพื่อแสดงความคิดเห็นในบรรทัด ฉันก็ไม่รู้ด้วยว่าจำเป็นต้องแสดงความคิดเห็นทั้ง 3 บรรทัดหรือไม่ หรือเพียงแค่แสดงความคิดเห็นในบรรทัดแรกจะปิดใช้งานทั้ง 3 รายการ ตัวอย่าง:

ทางนี้:

# jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
   ขนาดคีย์ DH < 1024, ขนาดคีย์ EC < 224, 3DES_EDE_CBC, อานนท์, NULL, \
   รวมถึง jdk.disabled.namedCurves

หรือทางนั้น?

# jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
# ขนาดคีย์ DH < 1024, ขนาดคีย์ EC < 224, 3DES_EDE_CBC, อานนท์, NULL, \
# รวม jdk.disabled.namedCurves

คำถาม:

วิธีแสดงความคิดเห็น (ปิดใช้งาน) บรรทัดก่อนหน้าใน java.security ไฟล์บน Windows และ Linux เพื่อหลีกเลี่ยง "ข้อผิดพลาด: javax.net.ssl.SSLHandshakeException" หรือมีคนอธิบายให้ฉันทราบหากมีวิธีแก้ปัญหาอื่นที่แตกต่างจากที่เผยแพร่

in flag
คุณต้องการบรรลุอะไรโดยการปิดใช้งานบรรทัดนี้ แนวทางของคุณอาจผิดหรือมีทางเลือกอื่นที่ง่ายกว่า
vn flag
การเปิดใช้งานอัลกอริทึมที่ใช้งานไม่ได้เหล่านี้จะส่งผลกระทบต่อความปลอดภัยอย่างมาก
acgbox avatar
ng flag
ฉันทราบและขอขอบคุณสำหรับการชี้แจง อย่างไรก็ตาม คำถามนี้ไม่เกี่ยวข้องกับผลกระทบด้านความปลอดภัยที่อาจเป็นสาเหตุของการปิดใช้งานบรรทัดเหล่านี้ คำถามเกี่ยวข้องกับ "วิธีปิดใช้งานบรรทัดเหล่านี้อย่างถูกต้องสำหรับ windows และ linux" เท่านั้น
dave_thompson_085 avatar
jp flag
**ใช่ อักขระความคิดเห็นคือ `#` ในทุกระบบ** เอกสารที่คุณลิงก์เป็นเรื่องเกี่ยวกับไฟล์ _policy_ ความปลอดภัย สำหรับ SecurityManager (แต่เดิมออกแบบมาสำหรับแอปเพล็ตและตอนนี้ใช้งานน้อย); java.security ไม่ใช่ไฟล์นโยบายความปลอดภัย หมายเหตุ แทนที่จะเปลี่ยน JRE/lib/security/java.security ซึ่งมีผลกับ JVM ทั้งหมด คุณสามารถตั้งค่า _system property_ `java.security.properties` ให้ชี้ไปที่ไฟล์ (แก้ไข) อื่นแยกกันสำหรับแต่ละ JVM เช่น ด้วย `-D` บน commandline หรือคุณสามารถเรียก `Security.setProperty()` ในโค้ดของคุณใกล้กับจุดเริ่มต้น
acgbox avatar
ng flag
@ dave_thompson_085 โปรดโพสต์คำตอบนี้เพื่อเลือกว่าถูกต้อง และเผยแพร่บรรทัดตัวอย่างที่ผมให้ความเห็นไว้ เพราะผมไม่รู้ว่าบรรทัดแรกหรือบรรทัดที่ 3 เป็นความเห็นหรือไม่ ขอขอบคุณสำหรับการชี้แจง
Score:1
ธง jp

ใช่ อักขระความคิดเห็นคือ # ในทุกระบบ หน้าเว็บที่คุณเชื่อมโยงเป็นเรื่องเกี่ยวกับไฟล์นโยบายความปลอดภัยสำหรับ SecurityManager (แต่เดิมออกแบบมาสำหรับแอปเพล็ตและตอนนี้ใช้น้อย); java.security ไม่ใช่ไฟล์นโยบายความปลอดภัย

ใช่ ทำทั้งหมด 3 บรรทัด ไวยากรณ์ความต่อเนื่อง (เครื่องหมายแบ็กสแลช-eol) ใช้ได้เฉพาะกับบรรทัดที่ไม่ได้ใส่ความคิดเห็น ดังนั้นหากต้องการแสดงความคิดเห็นรายการที่ต่อเนื่องกันหลายบรรทัด (จริง) ให้แสดงความคิดเห็นแต่ละบรรทัด

อย่างไรก็ตาม เนื่องจากตอนนี้คุณระบุชัดเจนว่ามีข้อผิดพลาดในโปรโตคอล จะปลอดภัยกว่าหากลบโปรโตคอลที่ละเมิดเท่านั้น (เกือบจะแน่นอนว่า TLSv1(.0) และ/หรือ TLSv1.1 -- SSLv3 ถูกปิดใช้งานตั้งแต่ 8u31 ในปี 2015 หลังจากที่ POODLE ทำลายอย่างย่อยยับ) และปล่อยส่วนที่เหลือไว้

คุณบังเอิญลองใช้ javamail เวอร์ชันเก่าหรือไม่? มีคุณลักษณะ (ผิดพลาด) อยู่ระยะหนึ่งซึ่งตั้งค่าเริ่มต้นโหมดปลอดภัยเป็น TLSv1(.0) (เท่านั้น) และเรียกใช้อาการนี้เมื่อ 8u291 และเวอร์ชันอื่นๆ ออกมา; เรามีคำถามมากมายเกี่ยวกับเรื่องนี้ เพียงค้นหา "javamail ไม่มีโปรโตคอลที่เหมาะสม" ในขณะที่การลบหรือลดการตั้งค่าอัลกอริทึมที่ถูกปิดใช้งาน (หรือถดถอยต่ำกว่า 8u291) จะทำให้ไคลเอนต์สามารถ พยายาม การเชื่อมต่อ TLS1.0 เซิร์ฟเวอร์จำนวนมากในปัจจุบันจะไม่ยอมรับเนื่องจาก TLS1.0 ถือว่าใช้งานไม่ได้ นั่นคือ ทำไม ตอนนี้ Java ถูกเปลี่ยนเป็นปิดใช้งานตามค่าเริ่มต้น ในกรณีนี้ จะเป็นการดีกว่าหากอัปเกรดจาวาเมล หรือ เพื่อกำหนดค่าอย่างชัดเจน mail.{smtp,imap,pop3}.ssl.โปรโตคอล ให้มีค่าเหมาะสมในทุกวันนี้ TLSv1.2,TLSv1.3.

(อื่นๆ) ทางเลือก: โดยทั่วไป แทนที่จะเปลี่ยนแปลงสิ่งต่างๆ ใน ​​JRE/lib/security/java.security ซึ่งมีผลกับ JVM ทั้งหมด คุณสามารถตั้งค่าคุณสมบัติของระบบ java.security.properties เพื่อชี้ไปยังไฟล์ (แก้ไข) ที่แตกต่างกันแยกกันสำหรับ JVM แต่ละรายการ/ใดๆ เช่น กับ -ด ใน commandline หรือโทร Security.setProperty() ในรหัสของคุณเพียงพอใกล้จุดเริ่มต้น

acgbox avatar
ng flag
สองสิ่ง: คำตอบของคุณตอบคำถามของฉัน แต่บางส่วนหรือไม่สมบูรณ์ (ไม่ใช่ javamail แต่เป็นอนุพันธ์ของ openbravo ที่เรียกว่า unicenta opos) และฉันต้องการให้คุณขยายส่วนสุดท้าย "(Other) Alternatives" ด้วยตัวอย่างการกำหนดค่า เนื่องจากฉันไม่พบไฟล์ `java.security.properties` ในโฟลเดอร์ java ขอขอบคุณ
dave_thompson_085 avatar
jp flag
@acgbox: `java.security.properties` ไม่ใช่ชื่อไฟล์ อย่างที่ฉันได้กล่าวไปแล้ว มันเป็น _system property_ ซึ่ง _value_ สามารถเป็นชื่อพาธ (URL ที่เป็นทางการ) ของไฟล์ที่คุณสร้างขึ้น ซึ่งอาจเป็นชื่อใดก็ได้ในตำแหน่งที่คุณเห็นว่าเหมาะสม นี่คือ _described_ ที่ด้านบนของไฟล์ java.security ดูที่นั่น แต่โปรดทราบว่ามันแสดงเฉพาะวิธีพื้นฐานในการตั้งค่าคุณสมบัติระบบด้วย `-D` ในขณะที่บางสภาพแวดล้อมมีวิธีอื่น ดังนั้น 'เช่น' ของฉัน

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา