Достаточно просто извлечь сертификаты напрямую с помощью keytool
, немного сложнее извлечь закрытый ключ (хотя вы могли бы написать программы для этого).Я бы предложил использовать комбинацию keytool
и openssl
.
Если ваше хранилище ключей имеет формат PKCS # 12 (файл .p12), пропустите этот шаг.Преобразуйте хранилище JKS в хранилище PKCS12, используя keytool
(требуется версия из Java 6 +)
keytool -importkeystore -srckeystore thekeystore.jks \
-srcstoretype JKS \
-destkeystore thekeystore.p12 \
-deststoretype PKCS12
Затем извлеките сертификат с помощью openssl:
openssl pkcs12 -in thekeystore.p12 -clcerts -nokeys -out servercert.pem
Извлеките закрытый ключ:
umask 0077
openssl pkcs12 -in thekeystore.p12 -nocerts -nodes -out serverkey.pem
umask 0022
Обратите внимание, что поскольку при извлечении секретного ключа используется опция -nodes
, файл секретного ключа не будет защищен (так как он не должен иметь пароль для использования в ApacheHttpd), поэтому убедитесь, что никто другой не может его прочитать.
Затем настройте Apache Httpd, используя SSLCertificateFile
и SSLCertificateKeyFile
, чтобы указать файл сертификатаи файл закрытого ключа соответственно.