2012-07-28 23 views
5

Làm cách nào để nhập tệp .jks vào kho bảo mật của bảo mật java? Tất cả các hướng dẫn tôi thấy là sử dụng một tập tin ".crt". Tuy nhiên, tôi chỉ có tệp ".jks" cũng là kho khóa mà tôi đã tạo bằng lệnh keytool.Cách nhập chứng chỉ jks vào kho lưu trữ tin cậy java

Hiện tại, tôi đang theo dõi this tutorial.

Tôi đã có thể tạo một kho khóa Java và cặp khóa và tạo yêu cầu ký chứng chỉ (CSR) cho một kho khóa Java hiện có, dựa trên hướng dẫn này. Nhưng tôi không thể nhập chứng chỉ CA gốc hoặc trung gian vào một kho khóa Java hiện có và nhập chứng chỉ chính đã ký vào một kho khóa Java hiện có, vì nó đang tìm tệp ".cert".

Tôi có thiếu gì đó trong các bước được liệt kê trong hướng dẫn không? Làm cách nào tôi có thể tin tưởng chứng chỉ nếu tệp duy nhất tôi có là tệp ".jks"? Và việc sử dụng tệp ".csr" là gì?

Xin lưu ý rằng tôi đang sử dụng Windows.

+0

Bạn có thể chỉ ra những gì bạn đang cố gắng đạt được không? Bạn đang cố thiết lập máy chủ? Hay bạn đang cố gắng sử dụng xác thực ứng dụng khách? Hoặc cả hai? Bạn đang sử dụng một khung công tác cụ thể tại máy khách và/hoặc máy chủ? –

+0

Tôi không sử dụng bất kỳ khung công tác nào. Tôi đang cố gắng xác thực máy chủ. Tôi cần phải xác thực nếu máy chủ tôi đang kết nối là hợp pháp cho chứng chỉ. – Arci

+0

Vì vậy, bạn có một khách hàng, không có máy chủ và bạn đã được cung cấp một kho khóa '.jks' để làm việc cùng? Nếu bạn chỉ là khách hàng và bạn không sử dụng xác thực ứng dụng khách thì bạn không cần tạo cặp khóa. –

Trả lời

10

".jks" truststore hoặc ít nhất phải là nếu bạn gán cho JSSE. Bạn nên thêm chứng chỉ từ CA của bạn vào tệp đó. Sau đó, phần mềm sẽ tra cứu chuỗi chứng chỉ bằng cách lặp qua các chứng chỉ. Khóa riêng tư nên được giữ nguyên trong tệp() được bảo vệ bằng mật khẩu) ".jks".

Nói cách khác, bạn nên nhập chứng chỉ vào ".jks" không xuất chứng chỉ ra khỏi nó. Bạn có thể phải tải xuống chứng chỉ của nhà cung cấp cụ thể của bạn một cách riêng biệt nếu chúng không được bao gồm trong phản hồi yêu cầu chứng chỉ của bạn. Bạn proabably có thể xuất chúng từ trình duyệt yêu thích của bạn là tốt. Thông thường chúng được lưu trữ ở định dạng DER X5.09 (cần tương thích với Java keytool).

bước (nói chung):

  1. Tạo một cặp & yêu cầu cert chìa khóa, cửa hàng vào mới hoặc kho khóa (.jks)
  2. hiện Gửi yêu cầu giấy chứng nhận sẽ được ký kết, có được chuỗi bắt đầu với chứng chỉ mà bạn đã yêu cầu
  3. Nhập chuỗi chứng chỉ vào lưu trữ khóa với khóa riêng
  4. Tạo mới hoặc sử dụng kho khóa hiện tại cho bên cần xác minh (ít nhất một hoặc nhiều khách hàng khi chúng tôi SSL) và nhập chuỗi chứng chỉ
  5. Tin tưởng chứng chỉ trong chuỗi chứng chỉ trong kho khóa ở trên, có thể là chứng chỉ hàng đầu (chứng chỉ "gốc").
  6. Định cấu hình và kiểm tra các bên, ví dụ: một máy chủ sử dụng kho khóa với khóa riêng và nhiều máy khách sử dụng kho khóa sau.
+0

Đây là câu trả lời chung, nếu bạn muốn có thêm chi tiết hoặc chi tiết cụ thể, vui lòng cho biết, vì tôi không thể cung cấp thông tin bổ sung nào mà không cung cấp thêm chi tiết cụ thể. –

+0

Cảm ơn bạn đã xóa thông tin đó! Tôi đã từng nghĩ rằng bằng cách thêm một chứng chỉ bên trong kho khóa có nghĩa là bạn đang thực sự thêm chứng chỉ bên trong JVM, không chỉ là một tệp kho khóa duy nhất. Bạn có thể dạy tôi làm thế nào để thiết lập Java để tin tưởng một chứng chỉ tự ký khi sử dụng HttpsURLConnection mà không cần thiết lập nó để tin tưởng tất cả các chứng chỉ? – Arci

+0

Không, nhưng tôi không phải làm vậy. Thông thường bạn sẽ cấu hình một ứng dụng Java để sử dụng một khóa cụ thể bằng bí danh. Java sẽ chỉ chấp nhận bí danh này nếu nó có thể tìm thấy toàn bộ chuỗi chứng chỉ, nhưng đối với các chứng chỉ tự ký, chuỗi sẽ có độ dài 1. Bạn chỉ cần tin tưởng chứng chỉ * ở điểm kết thúc khác * mà bạn không có khóa riêng. Ví dụ. khi tạo kết nối, máy khách sẽ thử và xem liệu nó có thể xây dựng một chuỗi cho một chứng chỉ tin cậy hợp lệ trong thời gian cụ thể hay không. Đối với điều này, bạn cần phải nối thêm hoặc tạo một kho khóa và nhập và tin tưởng chứng chỉ tự ký. –