Làm cách nào để tạo kho khóa và cửa hàng tin cậy bằng chứng chỉ tự ký?


17

Chúng tôi có máy chủ và máy khách JAVA liên lạc qua mạng bằng SSL. Máy chủ và máy khách xác thực lẫn nhau bằng chứng chỉ. Loại kho khóa được sử dụng bởi máy chủ và máy khách là JKS. Máy chủ và máy khách tải các tệp kho khóa và tệp tin của họ. Tên tệp kho khóa và cửa hàng tin cậy là: server.keystore, server.truststore, client.keystore và client.truststore. Tôi đang sử dụng chứng chỉ Tự ký chỉ để thử nghiệm.

Câu hỏi:

Q1. Tôi muốn biết lý do tại sao tôi cần thêm chứng chỉ riêng của máy chủ và máy khách vào các cửa hàng tin cậy tương ứng của họ, trong bước 6.

Quý 2 Tôi có thể giảm các bước số để đạt được điều tương tự không? Nếu có thì làm thế nào?

Các bước để tạo khóa RSA, chứng chỉ tự ký, kho khóa và cửa hàng tin cậy cho máy chủ

  1. Tạo khóa RSA riêng

    openssl genrsa -out diagserverCA.key 2048
    
  2. Tạo chứng chỉ x509

    openssl req -x509 -new -nodes -key diagserverCA.key \
                -sha256 -days 1024 -out diagserverCA.pem
    
  3. Tạo kho khóa PKCS12 từ khóa riêng và chứng chỉ chung.

    openssl pkcs12 -export -name server-cert \
                   -in diagserverCA.pem -inkey diagserverCA.key \
                   -out serverkeystore.p12
    
  4. Chuyển đổi kho khóa PKCS12 thành kho khóa JKS

    keytool -importkeystore -destkeystore server.keystore \
            -srckeystore serverkeystore.p12 -srcstoretype pkcs12 
            -alias server-cert
    
  5. Nhập chứng chỉ của khách hàng vào cửa hàng ủy thác của máy chủ.

    keytool -import -alias client-cert \
            -file diagclientCA.pem -keystore server.truststore
    
  6. Nhập chứng chỉ của máy chủ vào cửa hàng ủy thác của máy chủ.

    keytool -import -alias server-cert \
            -file diagserverCA.pem -keystore server.truststore
    

Các bước để tạo khóa riêng RSA, chứng chỉ tự ký, kho khóa và kho tin cậy cho khách hàng

  1. Tạo khóa riêng

    openssl genrsa -out diagclientCA.key 2048
    
  2. Tạo chứng chỉ x509

    openssl req -x509 -new -nodes -key diagclientCA.key \
                -sha256 -days 1024 -out diagclientCA.pem
    
  3. Tạo kho khóa PKCS12 từ khóa riêng và chứng chỉ chung.

    openssl pkcs12 -export -name client-cert \
                   -in diagclientCA.pem -inkey diagclientCA.key \
                   -out clientkeystore.p12
    
  4. Chuyển đổi kho khóa PKCS12 thành kho khóa JKS

    keytool -importkeystore -destkeystore client.keystore \
            -srckeystore clientkeystore.p12 -srcstoretype pkcs12 \
            -alias client-cert
    
  5. Nhập chứng chỉ của máy chủ vào cửa hàng ủy thác của khách hàng.

    keytool -import -alias server-cert -file diagserverCA.pem \
            -keystore client.truststore
    
  6. Nhập chứng chỉ của khách hàng vào cửa hàng ủy thác của khách hàng.

    keytool -import -alias client-cert -file diagclientCA.pem \
            -keystore client.truststore
    

Câu trả lời:


3

Https bình thường chỉ cần 1 lệnh;

keytool -genkeypair

Nếu khách hàng không tin tưởng một cách mù quáng bất kỳ chứng chỉ nào, thì bạn cần sao chép chứng chỉ công khai máy chủ của mình cho khách hàng.

Tại sao bạn lại sử dụng openssl?

https://docs.oracle.com/javase/10/tools/keytool.htm


Cho đến khi bản chỉnh sửa của tôi được xem xét ngang hàng: Cờ là -genkey Pair và bạn có thể thêm rất nhiều cờ khác nhau để tùy chỉnh chứng chỉ (ví dụ: -valid 365 hoặc -dname "cn = Mark Jones, ou = JavaSoft, o = Sun, c = US "). Tốt nhất xem liên kết trong câu trả lời để biết thêm chi tiết.
Julian Stadler

1
@JohannesStadler Cảm ơn tôi đã phê duyệt chỉnh sửa của bạn và cập nhật liên kết lên phiên bản java mới nhất, lưu ý rằng "Lệnh này được đặt tên -genkey trong các bản phát hành trước"
user1133275 27/07/18
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.