ความแตกต่างระหว่างไฟล์. keystore และไฟล์. jks


226

ฉันพยายามค้นหาความแตกต่างระหว่าง.keystoreไฟล์และ.jksไฟล์ แต่ฉันหามันไม่เจอ ฉันรู้ว่าjksมีไว้สำหรับ "ที่เก็บคีย์ Java" และทั้งคู่เป็นวิธีการจัดเก็บคู่คีย์ / ค่า

มีความแตกต่างหรือความชอบที่จะใช้อย่างใดอย่างหนึ่งอีก

คำตอบ:


197

ในที่สุด.keystoreและ.jksเป็นเพียงส่วนขยายไฟล์: ขึ้นอยู่กับคุณที่จะตั้งชื่อไฟล์ของคุณอย่างสมเหตุสมผล แอพลิเคชันบางคนใช้ไฟล์ที่เก็บคีย์ที่เก็บไว้ใน$HOME/.keystore: มันมักจะส่อให้เห็นว่ามันเป็นไฟล์จางกึนซอกตั้งแต่จางกึนซอกเป็นชนิดที่เก็บคีย์ค่าเริ่มต้นในการรักษาความปลอดภัยให้บริการ Sun / ออราเคิล Java ไม่ใช่ทุกคนที่ใช้.jksส่วนขยายสำหรับไฟล์ JKS เพราะมันบอกเป็นค่าเริ่มต้น ฉันขอแนะนำให้ใช้ส่วนขยายเพียงจำประเภทที่จะระบุ (หากคุณต้องการ)

ใน Java คำว่า keystore สามารถมีความหมายอย่างใดอย่างหนึ่งต่อไปนี้ขึ้นอยู่กับบริบท:

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

Java ใช้KeyStoreคลาสและ API ที่เกี่ยวข้องเพื่อใช้ประโยชน์จากที่เก็บคีย์ ( ไม่ว่าจะเป็นไฟล์อ้างอิงหรือไม่ก็ตาม) JKSเป็นรูปแบบไฟล์เฉพาะ Java แต่ API ยังสามารถใช้กับไฟล์ประเภทอื่น ๆ ได้โดยทั่วไปคือ PKCS # 12 เมื่อคุณต้องการโหลดที่เก็บคีย์คุณต้องระบุประเภทที่เก็บคีย์ ส่วนขยายทั่วไปจะเป็น:

  • .jksสำหรับประเภท"JKS",
  • .p12หรือ.pfxสำหรับชนิด"PKCS12"(ชื่อข้อกำหนดคือ PKCS # 12 แต่#ไม่ได้ใช้ในชื่อชนิดที่เก็บคีย์ Java)

นอกจากนี้ BouncyCastle ยังมีการนำไปใช้งานโดยเฉพาะอย่างยิ่งBKS (โดยทั่วไปจะใช้.bksส่วนขยาย) ซึ่งมักใช้สำหรับแอปพลิเคชัน Android


ฉันสามารถยืนยันได้มากกว่าการเปลี่ยนนามสกุลจาก. jks เป็น. keystore กรุณาสำรองข้อมูลก่อนที่จะทำ !!
BMaximus

77

คุณสับสนในเรื่องนี้

A keystoreคือที่เก็บใบรับรองกุญแจส่วนตัว ฯลฯ

มีข้อมูลจำเพาะของสิ่งที่ควรเป็นรูปแบบของที่เก็บคีย์นี้และที่เด่นคือ# PKCS12

JKS เป็นการใช้งานที่เก็บคีย์ของ Java นอกจากนี้ยังมี BKS เป็นต้น

เหล่านี้ล้วนเป็น keystore ประเภท

ดังนั้นเพื่อตอบคำถามของคุณ:

ความแตกต่างระหว่างไฟล์. keystore และไฟล์. jks

ไม่มีเลย JKS เป็นไฟล์ที่เก็บคีย์ มีความแตกต่างแม้ว่าระหว่าง keystore เป็นประเภท เช่นJKSvs#PKCS12


2
ฉันจะบอกว่าประเภทkeystore ที่โดดเด่นคือ JKS ไม่ใช่ PKCS # 12 เพียงเพราะคำว่า "keystore" เป็นส่วนหนึ่งของคำศัพท์ Java เท่านั้นไม่ค่อยได้ใช้นอกบริบทของ Java สิ่งนี้ถูกกล่าวว่าไฟล์ PKCS # 12 นั้นค่อนข้างธรรมดา (โดยทั่วไป.pfxหรือ.p12)
บรูโน่

@Bruno: คุณหมายถึงประเภทที่โดดเด่นในแอปพลิเคชัน Java
Cratylus

10
ไม่ฉันหมายความว่าคำว่า "keystore" ส่วนใหญ่เป็นคำภาษา Java แอปพลิเคชัน / แพลตฟอร์มอื่น ๆ มักจะเรียกสถานที่ / ไฟล์ที่คีย์และใบรับรองเก็บ "ที่เก็บข้อมูล" MS เรียกไฟล์ PKCS # 12 เช่น "การแลกเปลี่ยนข้อมูลส่วนบุคคล" คนอื่นมีชื่อเช่น "พวงกุญแจ" (OSX), "ฐานข้อมูลใบรับรอง" (NSS), "ที่เก็บใบรับรอง", "พวงกุญแจ", ... , สำหรับสถานที่ที่พวกเขาเก็บกุญแจและใบรับรองไม่ใช่ "ที่เก็บคีย์"
Bruno

3
@Bruno: ฉันเห็นสิ่งที่คุณหมายถึงจุดที่ดีฉันไม่เคยคิดเช่นนี้มาก่อนขอบคุณ
Cratylus

3

เหตุผลหนึ่งที่เลือก. keystore มากกว่า. jks ก็คือ Unity รับรู้ถึงอดีต แต่ไม่ใช่หลังเมื่อคุณนำทางไปยังไฟล์ที่เก็บคีย์ของคุณ (Unity 2017.3, macOS)

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