Ключ извлечения от JKS keystore для использования с apache2 и котом

У меня есть keystore в формате JKS, и я хочу использовать это с apache2. Как я могу экспортировать ключ и сертификаты (что я уже объединил в цепочку), JKS в простом способе? Я нашел много ответов там, но кажусь, что ни у кого нет моей проблемы... (или ответ неравнодушен),

Спасибо за Ваше время.

5
задан 25 June 2014 в 02:23
3 ответа

JKS имеет сертификаты в DER, а для Apache вы хотите иметь PEM (AKA X509) формат.

Пример того, как это сделать:

$JAVA_HOME/bin/keytool --list -keystore <mykeystore>
$JAVA_HOME/bin/keytool -export -rfc -alias <alias_name> -file <cert.crt> -keystore <mykeystore>

Итак, вы хотите экспортировать закрытый ключ, а затем сертификаты.

Экспортированный закрытый ключ, расположенный затем идет в директиву SSLCertificateKeyFile в httpd.conf, и вы можете поместить цепочечные сертификаты в директиву SSLCertificateChainFile. Это в дополнение к директиве SSLCertificateFile.

Смотрите http://httpd.apache.org/docs/2.2/mod/mod_ssl.html

7
ответ дан 3 December 2019 в 01:06

Нет возможности «напрямую» экспортировать что-либо, кроме сертификата. Вам нужно будет выполнить промежуточный шаг в формате PKCS12.

keytool -importkeystore -srckeystore rec.jks -destkeystore rec.p12 -deststoretype PKCS12

Это запросит парольные фразы источника и назначения. Если вам нужно автоматизировать это, используйте PW = somepass keytool -srcpass: env PW ... или keytool -srcstorepass: file filecontainpass ... , и аналогично для -deststorepass

И оттуда вы можете использовать openssl для преобразования файла PKCS12 в стандартный PEM:

openssl pkcs12 -in rec.p12 -out rec.pem

Это тоже запросит парольные фразы. Используйте параметры -passin env: PW или -passin file: filename и -passout или -nodes , если вам не нужен результат ключ зашифрован, но будьте осторожны с тем, куда вы это пишете.

Полученный файл будет содержать ваш ключ, сертификат и, возможно, полную цепочку сертификатов.

2
ответ дан 3 December 2019 в 01:06

Вы не можете получить закрытый ключ непосредственно из JKS с помощью keytool;вместо этого вы должны сначала преобразовать в формат PKCS12, а затем использовать команду openssl. Я выполнил следующую работу:

  1. Используйте keytool для преобразования хранилища ключей в pkcs12

    keytool -importkeystore -srckeystore jks_filename.jks -destkeystore p12_filename.p12 -deststoretype PKCS12

  2. Используйте openssl для экспорта сертификата в виде файла. pem-файл:

    openssl pkcs12 -in p12_filename.p12 -nokeys -clcerts -out cert_filename.pem

  3. Используйте openssl для экспорта соответствующего закрытого ключа как файла .pem:

    openssl pkcs12 -in p12_filename.p12 - nocerts -out имя_файла_ключа.pem

  4. Обновите ssl.conf в двух местах (SSLCertificateFile и SSLCertificateKeyFile), чтобы настроить порт 443 для использования этих файлов сертификатов и ключей.

2
ответ дан 3 December 2019 в 01:06

Теги

Похожие вопросы