У меня есть keystore в формате JKS, и я хочу использовать это с apache2. Как я могу экспортировать ключ и сертификаты (что я уже объединил в цепочку), JKS в простом способе? Я нашел много ответов там, но кажусь, что ни у кого нет моей проблемы... (или ответ неравнодушен),
Спасибо за Ваше время.
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.
Нет возможности «напрямую» экспортировать что-либо, кроме сертификата. Вам нужно будет выполнить промежуточный шаг в формате 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
, если вам не нужен результат ключ зашифрован, но будьте осторожны с тем, куда вы это пишете.
Полученный файл будет содержать ваш ключ, сертификат и, возможно, полную цепочку сертификатов.
Вы не можете получить закрытый ключ непосредственно из JKS с помощью keytool;вместо этого вы должны сначала преобразовать в формат PKCS12, а затем использовать команду openssl. Я выполнил следующую работу:
Используйте keytool для преобразования хранилища ключей в pkcs12
keytool -importkeystore -srckeystore jks_filename.jks -destkeystore p12_filename.p12 -deststoretype PKCS12
Используйте openssl для экспорта сертификата в виде файла. pem-файл:
openssl pkcs12 -in p12_filename.p12 -nokeys -clcerts -out cert_filename.pem
Используйте openssl для экспорта соответствующего закрытого ключа как файла .pem:
openssl pkcs12 -in p12_filename.p12 - nocerts -out имя_файла_ключа.pem
Обновите ssl.conf в двух местах (SSLCertificateFile и SSLCertificateKeyFile), чтобы настроить порт 443 для использования этих файлов сертификатов и ключей.