Score:1

เหตุใดไคลเอนต์ (ที่ไม่ใช่เบราว์เซอร์) บางครั้งจึงไม่เชื่อถือใบรับรองที่ถูกต้องและลงนามแล้ว

ธง us

นี่เป็นคำถามที่เป็นที่ยอมรับ ... ฉันหวังว่าจะไม่เป็นไร

ในที่ทำงานของฉัน ฉันมักจะแก้ปัญหาเมื่อไคลเอ็นต์ที่ทำงานบนเซิร์ฟเวอร์ Linux (โดยปกติจะเป็นแอปพลิเคชันจาวา) ไม่เชื่อถือใบรับรองที่ถูกต้องและลงนาม ซึ่งเป็นใบรับรองที่เบราว์เซอร์เชื่อถือ การแก้ไขอย่างรวดเร็วตามปกติของเราคือการเพิ่มใบรับรองไปยังที่เก็บที่เชื่อถือได้ของ java cacerts แต่ทำให้ฉันรำคาญว่าเหตุใดจึงจำเป็น

ในความเข้าใจของฉันมีความเป็นไปได้สองประการ:

  1. ฝั่งเซิร์ฟเวอร์ไม่ส่งเชนแบบเต็ม (ใบรับรองเอนทิตีปลายทาง + ใบรับรองระดับกลาง) ในลำดับที่ถูกต้อง และไคลเอนต์ไม่เชื่อถือใบรับรองระดับกลาง (อาจเป็นเพราะใบรับรองเก่าเกินไป)
  2. ร้านค้าที่ไว้วางใจของลูกค้าไม่มีใบรับรองรูทเพื่อใช้เป็นจุดยึดที่เชื่อถือได้ (อาจเป็นเพราะเก่าเกินไป)

ถูกต้องหรือไม่? ถ้าเป็นเช่นนั้น ดูเหมือนว่ามีความเป็นไปได้ทางเลือกอื่นในการบังคับให้เชื่อถือใบรับรองเอนทิตีคือ:

  • กำหนดค่าแอปพลิเคชันเซิร์ฟเวอร์เพื่อส่งห่วงโซ่แบบเต็ม
  • อัปเกรดไคลเอ็นต์ (เช่น java) เป็นเวอร์ชันใหม่กว่า ในกรณีของฉัน โดยปกติจาวารีลีสหลักที่สามารถใช้ได้จะถูกจำกัดโดยข้อกำหนดเบื้องต้นของซอฟต์แวร์ แต่บางทีรีลีสย่อยแต่ละรีลีสจะมี trust store ที่อัปเดตแล้ว

ขอขอบคุณสำหรับความคิดเห็นใด ๆ เกี่ยวกับคำชี้แจง

Steffen Ullrich avatar
se flag
*"และ ลูกค้าไม่เชื่อถือใบรับรองระดับกลาง (อาจเป็นเพราะเก่าเกินไป)"* - สิ่งนี้ไม่เกี่ยวข้องกับใบรับรองเก่า ที่จัดเก็บที่เชื่อถือได้ประกอบด้วย CA รูทเท่านั้น และคาดว่าเซิร์ฟเวอร์จะส่งใบรับรองระดับกลาง ตัวกลางจะเชื่อถือได้หากออกโดย root CA ที่เชื่อถือได้ในเครื่องหรือโดยตัวกลางอื่นที่เชื่อถือได้ - ไม่ว่าไคลเอ็นต์จะอายุเท่าไหร่ก็ตาม
Steffen Ullrich avatar
se flag
นอกเหนือจากที่คุณกล่าวถึงประเด็นหลัก สาเหตุอื่นๆ ที่เป็นไปได้: ไคลเอ็นต์ไม่สามารถส่ง SNI ได้ (ไคลเอ็นต์สมัยใหม่ส่วนใหญ่ทำได้) เซิร์ฟเวอร์ได้รับการกำหนดค่าอย่างถูกต้องสำหรับ IPv4 แต่ไม่ใช่ IPv6 และไคลเอ็นต์พยายามเชื่อมต่อกับ IPv6 ในขณะที่เบราว์เซอร์อาจใช้ IPv4
DarkMoon avatar
in flag
คุณไม่ได้กล่าวถึง O/S แต่ฉันเชื่อว่าใน Windows เบราว์เซอร์ใช้ Windows certifcate store แต่ Java ใช้โดยค่าเริ่มต้น ดังนั้นเพียงเพราะเบราว์เซอร์ไว้วางใจเขารับรองไม่ได้หมายความว่า Java จะทำเช่นนั้น สามารถใช้ javax.net.ssl.trustStoreType เพื่อบอกให้รับรายการใบรับรองหลักที่เชื่อถือได้จากรายการภายในของ Windows
dave_thompson_085 avatar
jp flag
@DarkMoon: IE Edge และ Chrome/Windows ใช้ Windows cert store แต่ Firefox ใช้ของตัวเอง ในระบบปฏิบัติการทั้งหมด Java สร้างจาก Oracle (และก่อนหน้านี้คือ Sun) โดยค่าเริ่มต้นเป็นไฟล์ cacerts ของตนเอง แต่ OpenJDK ขึ้นอยู่กับตัวสร้าง OpenJDK สร้างขึ้นสำหรับ Linux distros (เสมอ? เกือบตลอดเวลา?) ใช้ที่เก็บระบบ
em_bo avatar
us flag
@SteffenUllrich จากสิ่งที่ฉันสามารถบอกได้ Java มักจะมาพร้อมกับใบรับรองระดับกลางสำหรับ CA รายใหญ่ ฉันได้เห็นอายุของลูกค้าเข้ามามีบทบาทเมื่อ CA เปลี่ยนไปใช้ใบรับรองระดับกลางที่ใหม่กว่าที่จัดส่ง
em_bo avatar
us flag
@DarkMoon ฉันไม่ชัดเจน แต่บริบทของคำถามของฉันคือเซิร์ฟเวอร์ Linux เป็นหลัก ดังนั้นเบราว์เซอร์ที่เป็นปัญหาและไคลเอ็นต์ที่เป็นปัญหาไม่ได้ทำงานบนระบบเดียวกัน

โพสต์คำตอบ

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