How to import an existing X.509 certificate and private key in Java keystore to use in SSL?
Как импортировать существующий сертификат X.509 и закрытый ключ в хранилище ключей Java для использования в SSL?
У меня есть пара сертификатов X.509 и ключевой файл.
Как мне импортировать эти два в одно хранилище ключей? Все примеры, которые я смог найти в Google, всегда генерируют ключ самостоятельно, но у меня уже есть ключ.
Примечание: Убедитесь, что вы ввели пароль для файла pkcs12 - в противном случае вы получите исключение с нулевым указателем при попытке его импорта. (На случай, если у кого-то еще была такая головная боль). (Шутливое спасибо!)
Примечание 2: Возможно, вы захотите добавить -chain опцию для сохранения всей цепочки сертификатов. (Спасибо Mafuba)
Шаг второй: Преобразуйте файл pkcs12 в хранилище ключей Java
Вопросы и ответы: Я получаю сообщение об ошибке IOException: keystore password was incorrect
Если вы используете OpenSSL 3.0 и JDK новее, чем Java8u302, и получаете следующую ошибку:
keytool error: java.io.IOException: keystore password was incorrect
Возможно, вы столкнулись с изменением шифра по умолчанию в openssl. Этот ответ Stack Overflow содержит ответ. Возможно, поблагодарите Томаса за поддержку.
Хотите верьте, хотите нет, keytool не предоставляет такой базовой функциональности, как импорт закрытого ключа в хранилище ключей. Вы можете попробовать этот обходной путь, объединив файл PKSC12 с закрытым ключом в хранилище ключей:
Если keystore.jks не существует, он будет создан, содержащий pkcs.12 из предыдущего шага. В противном случае вы импортируете pkcs.12 в существующее хранилище ключей.
Эти инструкции взяты из сообщения в блоге "Создайте хранилище ключей Java (.JKS) из сертификатов Let's Encrypt" Максимилиана Бема.
Вот больше о различных типах файлов в /etc/letsencrypt/live/you.com/.