Импорт цепочки сертификатов PEM и ключ к Java Keystore
Существует множество ресурсов по этой теме, но я не нашел ни одного, который бы охватывал этот немного особый случай.
У меня 4 файла;
- privatekey.pem
- certificate.pem
- intermediate_rapidssl.pem
- ca_geotrust_global.pem
И я хочу импортировать их в свежий склад ключей.
Некоторые сайты предлагают использовать DER-формат и импортировать их один за другим, но это не удалось, потому что ключ не распознан.
Другой сайт предложил специальный класс "ImportKey" для запуска для импорта, и это работало, пока я не увидел, что цепочка разорвана. Т.е. длина цепочки в сертификате равна 1, без учета промежуточного и ок.
Некоторые сайты предлагают PKCS7, но я даже не могу получить цепочку от этого. Другие предлагают формат PKCS12, но, насколько мне известно, мои тесты не сработали для получения всей цепочки.
Любые советы или советы приветствуются.
3 ответа
Это может быть не идеально, но у меня были некоторые заметки о моем использовании 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 ЧАСТНЫЙ КЛЮЧ
...
END RSA ЧАСТНЫЙ КЛЮЧИмпортируйте подписанный первичный сертификат и ключ в существующее хранилище ключей Java:
keytool -import -trustcacerts -alias yourdomain -file combined.pem -keystore yourkeystore.jks
Объединить все файлы *.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 не предоставляет способ импортировать сертификат + закрытый ключ из одного (объединенного) файла, как предложено выше. Он работает нормально, но импортируется только сертификат, а закрытый ключ игнорируется. Вы можете проверить это по keytool -list -v -keystore yourkeystore.jks
- тип записи вашего домена TrustedCertEntry, а не PrivateKeyEntry.
Таким образом, чтобы решить начальную проблему, нужно сначала создать хранилище ключей PKCS#12 с помощью openssl (или аналогичного инструмента), а затем импортировать хранилище ключей с помощью keytool -importkeystore
,