Sự khác biệt giữa tệp .keystore và tệp .jks


227

Tôi đã cố gắng tìm sự khác biệt giữa .keystorecác tập tin và .jkstập tin, nhưng tôi không thể tìm thấy nó. Tôi biết jkslà dành cho "kho khóa Java" và cả hai đều là một cách để lưu trữ các cặp khóa / giá trị.

Có sự khác biệt hoặc một sở thích để sử dụng cái này hơn cái khác không?

Câu trả lời:


197

Cuối cùng, .keystore.jkschỉ là phần mở rộng tệp: tùy thuộc vào bạn để đặt tên cho tệp của mình một cách hợp lý. Một số ứng dụng sử dụng tệp kho khóa được lưu trữ trong $HOME/.keystore: nó thường ngụ ý rằng đó là tệp JKS, vì JKS là loại kho khóa mặc định trong nhà cung cấp bảo mật Java của Sun / Oracle . Không phải ai cũng sử dụng .jkstiện ích mở rộng cho các tệp JKS, vì nó được ngụ ý là mặc định. Tôi khuyên bạn nên sử dụng tiện ích mở rộng, chỉ cần nhớ loại nào sẽ chỉ định (nếu bạn cần).

Trong Java, kho khóa từ có thể có một trong các nghĩa sau, tùy thuộc vào ngữ cảnh:

Khi nói về tệp và lưu trữ, đây thực sự không phải là phương tiện lưu trữ cho các cặp khóa / giá trị (có rất nhiều hoặc các định dạng khác cho việc này). Thay vào đó, nó là một thùng chứa để lưu trữ khóa và chứng chỉ mật mã (tôi tin rằng một số trong số chúng cũng có thể lưu trữ mật khẩu). Nói chung, các tệp này được mã hóa và bảo vệ bằng mật khẩu để không để dữ liệu này có sẵn cho các bên trái phép.

Java sử dụng KeyStorelớp và API liên quan của nó để sử dụng kho khóa ( cho dù đó là tệp dựa trên hay không ). JKSlà định dạng tệp dành riêng cho Java, nhưng API cũng có thể được sử dụng với các loại tệp khác, điển hình là PKCS # 12. Khi bạn muốn tải một kho khóa, bạn phải chỉ định loại kho khóa của nó. Các phần mở rộng thông thường sẽ là:

  • .jkscho loại hình "JKS",
  • .p12hoặc .pfxcho loại "PKCS12"(tên đặc tả là PKCS # 12, nhưng #không được sử dụng trong tên loại kho khóa Java).

Ngoài ra, BouncyCastle cũng cung cấp các triển khai của nó, đặc biệt là BKS (thường sử dụng .bkstiện ích mở rộng), thường được sử dụng cho các ứng dụng Android.


Tôi có thể xác nhận hơn là thay đổi phần mở rộng từ .jks sang .keystore sẽ hoạt động. Hãy sao lưu trước khi làm điều đó !!
BMaximus

77

Bạn đang bối rối về điều này.

A keystorelà một thùng chứa các chứng chỉ, khóa riêng, vv

Có các thông số kỹ thuật về định dạng của kho khóa này và chủ yếu là # PKCS12

JKS là triển khai kho khóa của Java. Ngoài ra còn có BKS, v.v.

Đây là tất cả các loại kho khóa .

Để trả lời câu hỏi của bạn:

sự khác nhau giữa các tập tin .keystore và tập tin .jks

Chẳng có ai. JKS là các tệp kho khóa. Có sự khác biệt giữa các loại kho khóa . ví dụ JKSvs#PKCS12


2
Tôi muốn nói loại kho khóa chiếm ưu thế là JKS, không phải PKCS # 12, chỉ vì từ "kho khóa" là một phần của thuật ngữ Java, chỉ hiếm khi được sử dụng bên ngoài ngữ cảnh của Java. Điều này đang được nói, các tệp PKCS # 12 thực sự khá phổ biến (thường .pfxhoặc .p12).
Bruno

@Bruno: Bạn có nghĩa là loại chiếm ưu thế trong các ứng dụng Java.
Cratylus

10
Không, ý tôi là từ "kho khóa" chủ yếu là từ Java. Các ứng dụng / nền tảng khác hiếm khi gọi địa điểm / tệp trong đó các khóa và chứng chỉ được lưu trữ "kho khóa". Ví dụ, MS gọi các tệp PKCS # 12 "Trao đổi thông tin cá nhân". Những người khác có tên như "chuỗi khóa" (OSX), "cơ sở dữ liệu chứng chỉ" (NSS), "kho lưu trữ chứng chỉ", "vòng khóa", ..., cho những nơi họ lưu trữ khóa và chứng chỉ, không thực sự là "kho khóa".
Bruno

3
@Bruno: Tôi hiểu ý của bạn. Điểm tốt. Tôi đã không nghĩ về nó như thế này trước đây. Cảm ơn
Cratylus

3

Một lý do để chọn .keystore hơn .jks là Unity nhận ra cái trước nhưng không phải cái sau khi bạn điều hướng để chọn tệp kho khóa của mình (Unity 2017.3, macOS).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.