У нас сервер JAVA та клієнт спілкуються по мережі за допомогою SSL. Сервер і клієнт взаємно ідентифікують один одного за допомогою сертифікатів. Тип зберігання ключів, який використовується сервером та клієнтом, - це JKS. Сервер і клієнт завантажують свої файли сховищ і довіри. Імена файлів сховища ключів та довіри - це: server.keystore, server.truststore, client.keystore та client.truststore. Я використовую самопідписані сертифікати лише для тестування.
Запитання:
Q1. Мені хотілося б знати, чому мені потрібно додати власні сертифікати сервера та клієнта у відповідні довірені сховища, на кроці 6.
Q2. Чи можна зменшити число кроків, щоб досягти того самого? Якщо так, то як?
Кроки для створення ключа RSA, авторизованих сертифікатів, зберігання ключів та довіри для сервера
Створіть приватний ключ RSA
openssl genrsa -out diagserverCA.key 2048
Створіть сертифікат x509
openssl req -x509 -new -nodes -key diagserverCA.key \ -sha256 -days 1024 -out diagserverCA.pem
Створіть сховище ключів PKCS12 з приватного ключа та відкритого сертифіката.
openssl pkcs12 -export -name server-cert \ -in diagserverCA.pem -inkey diagserverCA.key \ -out serverkeystore.p12
Перетворіть сховище ключів PKCS12 у сховище ключів JKS
keytool -importkeystore -destkeystore server.keystore \ -srckeystore serverkeystore.p12 -srcstoretype pkcs12 -alias server-cert
Імпортуйте сертифікат клієнта в сховище сервера.
keytool -import -alias client-cert \ -file diagclientCA.pem -keystore server.truststore
Імпортуйте сертифікат сервера в магазин довіри сервера.
keytool -import -alias server-cert \ -file diagserverCA.pem -keystore server.truststore
Кроки по створенню приватного ключа RSA, сертифіката, що підписується самостійно, зберігання ключів та довіреного магазину для клієнта
Створіть приватний ключ
openssl genrsa -out diagclientCA.key 2048
Створіть сертифікат x509
openssl req -x509 -new -nodes -key diagclientCA.key \ -sha256 -days 1024 -out diagclientCA.pem
Створіть сховище ключів PKCS12 з приватного ключа та відкритого сертифіката.
openssl pkcs12 -export -name client-cert \ -in diagclientCA.pem -inkey diagclientCA.key \ -out clientkeystore.p12
Перетворіть сховище ключів PKCS12 у сховище ключів JKS
keytool -importkeystore -destkeystore client.keystore \ -srckeystore clientkeystore.p12 -srcstoretype pkcs12 \ -alias client-cert
Імпортуйте сертифікат сервера в магазин довіри клієнта.
keytool -import -alias server-cert -file diagserverCA.pem \ -keystore client.truststore
Імпортуйте сертифікат клієнта в магазин довіри клієнта.
keytool -import -alias client-cert -file diagclientCA.pem \ -keystore client.truststore