На эту тему есть много ресурсов, но я не нашел ни одного, который бы освещал этот немного особый случай.
У меня 4 файла;
И я хочу импортировать их в новое хранилище ключей.
Некоторые сайты предлагают использовать формат DER и импортировать их по одному, но это не удалось, потому что ключ не распознается.
Другой сайт предложил запустить специальный класс ImportKey для импорта, и это работало, пока я не увидел, что цепочка разорвана. Т.е. длина цепочки в сертификате равна 1 без учета промежуточных и ок.
Некоторые сайты предлагают PKCS7, но я даже не могу получить цепочку из этого. Другие предлагают формат PKCS12, но, судя по моим тестам, он также не помог получить всю цепочку.
Любые советы или подсказки приветствуются.
Объедините все файлы * .pem в один файл pem, например all.pem Затем создайте хранилище ключей в формате p12 с закрытым ключом + all.pem
openssl pkcs12 -export -inkey private.key -in all.pem -name test -out test.p12
Затем экспортируйте p12 в jks
keytool -importkeystore -srckeystore test.p12 -srcstoretype pkcs12 -destkeystore test.jks
Возможно, это не идеально, но у меня были заметки об использовании keytool
что я модифицировал для вашего сценария.
Импортируйте корневой или промежуточный сертификат CA в существующее хранилище ключей Java:
keytool -import -trustcacerts -alias root -file ca_geotrust_global.pem -keystore yourkeystore.jks
keytool -import -trustcacerts -alias root -file intermediate_rapidssl.pem -keystore yourkeystore.jks
Перед импортом объедините сертификат и закрытый ключ в один файл.
cat certificate.pem privatekey.pem > combined.pem
В результате должен получиться файл, похожий на формат ниже.
НАЧАТЬ СЕРТИФИКАТ
...
КОНЕЦ СЕРТИФИКАТА
НАЧАТЬ ЧАСТНЫЙ КЛЮЧ RSA
...
КОНЕЦ ЧАСТНОГО КЛЮЧА RSA
Импортируйте подписанный первичный сертификат и ключ в существующее хранилище ключей Java:
keytool -import -trustcacerts -alias yourdomain -file combined.pem -keystore yourkeystore.jks
keytool не позволяет импортировать сертификат + закрытый ключ из одного (комбинированного) файла, как было предложено выше. Он работает нормально, но импортируется только сертификат, а закрытый ключ игнорируется. Вы можете проверить это keytool -list -v -keystore yourkeystore.jks
- тип записи yourdomain - TrustedCertEntry, а не PrivateKeyEntry.
Итак, чтобы решить первоначальную проблему, сначала нужно создать хранилище ключей PKCS # 12 с помощью openssl (или аналогичного инструмента), а затем импортировать хранилище ключей с помощью keytool -importkeystore
.