У нас есть 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