อะไรคือความแตกต่างระหว่าง Cacerts และ Keystore?


114

อะไรคือความแตกต่างระหว่างสอง cacerts และที่เก็บคีย์?

ถ้าฉันใช้คำจำกัดความที่พบในลิงก์เหล่านี้cacertsและที่เก็บคีย์ดูเหมือนว่าเป็นชุดของใบรับรอง แต่ในบริบทของระบบกระจาย (Java) ใช้ตัวใดในการตรวจสอบสิทธิ์ระหว่างการเชื่อมต่อ SSL ทั้งสองหรือเพียงหนึ่งในพวกเขาหรือทางเลือก?


3
cacerts = ใบรับรองผู้ออกใบรับรอง ?
Peter Mortensen

คำตอบ:


139

'cacerts' คือ Truststore Trust Store ใช้เพื่อรับรองความถูกต้องของเพื่อน ที่เก็บคีย์ใช้เพื่อพิสูจน์ตัวตนของคุณเอง


สวัสดี EJP ขอบคุณสำหรับคำตอบฉันยกมาก่อนที่ฉันจะอ่านคำตอบใด ๆ ของคุณ) ดังนั้นเพียงแค่คำชี้แจงหากฉันสรุปคำตอบของคุณใน Francis และ Pangea Cacerts ใช้เพื่อรับรองความถูกต้องของลูกค้าที่ร้องขอการเข้าถึงหรือการเชื่อมต่อและสำหรับที่เก็บคีย์ฉันไม่ค่อยเข้าใจว่าทำไมคุณถึงต้องการพิสูจน์ตัวตนด้วยตัวเอง :)
dimas

20
อ่านสิ่งที่ฉันเขียนอีกครั้ง (1) truststore ถูกนำมาใช้ในการตรวจสอบคนรอบข้าง หากคุณเป็นลูกค้าเซิร์ฟเวอร์คือเพียร์ ถ้าคุณเป็นเซิร์ฟเวอร์ในทางกลับกัน (2) หากคุณเป็นเซิร์ฟเวอร์หรือหากคุณเป็นไคลเอนต์และเซิร์ฟเวอร์ร้องขอการตรวจสอบสิทธิ์ไคลเอนต์คุณต้องพิสูจน์ตัวตนกับเพียร์ดังนั้นคุณต้องมีใบรับรองและคีย์ส่วนตัวของคุณเองซึ่งอยู่ในที่เก็บคีย์ (สับสนรูปแบบไฟล์เดียวกันถูกใช้สำหรับทั้งสองและเรียกว่าไฟล์ที่เก็บคีย์)
Marquis of Lorne

ตกลงเข้าใจแล้ว แต่เป็นเพียงคำถามติดตาม cacerts ของฉันมีใบรับรองทั้งหมดที่เก็บไว้ในที่เก็บคีย์และอื่น ๆ แม้ว่าใบรับรองบางใบรวมถึงใบรับรองส่วนตัวของแอปพลิเคชันของฉันจะมีนามแฝงที่แตกต่างกัน แต่ก็มีลายเซ็นดิจิทัลเหมือนกัน ดังนั้นฉันจึงสามารถใช้ cacerts ของฉันได้หากฉันเชื่อมต่อกับเซิร์ฟเวอร์และร้องขอการรับรองความถูกต้อง?
dimas

ฉันไม่เข้าใจส่วนที่เกี่ยวกับ "นามแฝงที่แตกต่างกัน" แตกต่างจากอะไร? คำถามสุดท้ายของคุณสามารถตอบได้จากการทดลอง
Marquis of Lorne

3
@ raja777m cacertsคือคนที่คุณไว้วางใจ ฉันไม่เห็นเหตุผลใด ๆ ในการเปลี่ยนแปลงระหว่างสภาพแวดล้อมเว้นแต่คุณจะยอมรับข้อผิดพลาดในการใช้ใบรับรองที่ลงชื่อด้วยตนเองสำหรับเซิร์ฟเวอร์ทดสอบ: ความผิดพลาดเนื่องจากหมายความว่าคุณใช้เส้นทางรหัสที่แตกต่างกันในการทดสอบและในการผลิต
Marquis of Lorne

42

cacerts เป็นที่ที่ Java เก็บใบรับรองสาธารณะของ root CAs Java ใช้ cacerts เพื่อพิสูจน์ตัวตนเซิร์ฟเวอร์

Keystore คือที่ที่ Java เก็บคีย์ส่วนตัวของไคลเอ็นต์เพื่อให้สามารถแชร์กับเซิร์ฟเวอร์เมื่อเซิร์ฟเวอร์ร้องขอการพิสูจน์ตัวตนไคลเอ็นต์


@dimas เห็นได้ชัด แต่สิ่งที่เขาหมายถึงคือ 'คำขอ'
Marquis of Lorne

1
@ user207421 ฉันเชื่อในคำตอบนี้ว่า Java App กำลังเล่นบทบาทของไคลเอ็นต์ http และ http url ที่แอป Java ของเราเรียกคือแอปพลิเคชันเซิร์ฟเวอร์ ดังนั้น KeyStore ของแอป Java ไคลเอนต์ของเราควรมีทั้งคีย์ส่วนตัว + ใบรับรอง (คีย์สาธารณะที่ลงนามแล้ว) และส่งเฉพาะใบรับรองไปยังแอปเซิร์ฟเวอร์ใช่ไหม และหากแอปเซิร์ฟเวอร์เป็นแอป Java ด้วยจะตรวจสอบใบรับรองที่ส่งโดยแอป Java ไคลเอ็นต์ของเราโดยใช้ไฟล์ cacert ของตัวเองใช่ไหม
user104309

0

Cacerts เป็นรายละเอียดของหน่วยงานเซ็นที่เชื่อถือได้ซึ่งสามารถออกใบรับรองได้ สิ่งนี้คือสิ่งที่เบราว์เซอร์ส่วนใหญ่มีเนื่องจากใบรับรองที่ระบุว่าเป็นของแท้ Keystone มีใบรับรองที่เกี่ยวข้องกับบริการของคุณเพื่อพิสูจน์ตัวตนลูกค้า


-2

ตรวจสอบเส้นทาง JAVA_HOME ของคุณ เนื่องจากระบบมองหาไฟล์ java.policy ซึ่งอยู่ในJAVA_HOME/jre/lib/security. JAVA_HOME ../JAVA/JDKของคุณควรจะเสมอ


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