Как я могу перенести SSL с Tomcat на Apache HTTPD?

Я переношу свой единственный сервер tomcat в кластер, балансирую нагрузку и кэширую Apache HTTPD (обратный прокси с mod_proxy). Можно ли преобразовать сертификат и ключи в формат апача или мне нужно перевыпустить все это?


person Julio Faerman    schedule 16.09.2010    source источник


Ответы (1)


Извлечь сертификаты напрямую с помощью 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, файл закрытого ключа не будет защищен (поскольку он не должен иметь пароля для использования Apache Httpd), поэтому убедитесь, что никто другой не сможет его прочитать. .

Затем настройте Apache Httpd, используя SSLCertificateFile и SSLCertificateKeyFile, чтобы указать на файл сертификата и файл закрытого ключа соответственно.

person Bruno    schedule 16.09.2010
comment
-srsstoretype должен быть -scrstoretype - person jramoyo; 06.08.2013
comment
@jramoyo, спасибо, что заметили эту опечатку. (Возможно, вы также могли напрямую предлагать изменения.) - person Bruno; 06.08.2013
comment
К сожалению, файл servercert.pem пуст (0 байт). Любой намек? - person Grim; 17.04.2015
comment
@PeterRader Возможно, в вашем магазине JKS изначально не было закрытых ключей, и в этом случае преобразование его в PKCS # 12 не сработало бы. - person Bruno; 17.04.2015
comment
Ах, jks не должен содержать закрытый ключ! Вы сделали мой день! Эй, не могли бы вы взглянуть на статью об установке на sotacms.com? - person Grim; 17.04.2015
comment
Не могли бы вы объяснить, как точно выполнить процедуру в обратном порядке: у меня есть рабочая конфигурация httpd ssl: 1. SSLCertificateFile certificate.cer, 2. SSLCertificateKeyFile privatekey.key 3. SSLCertificateChainFile Intermediate.cer. Мне нужно создать хранилище ключей java (.jks) для vertx 3. Все мои попытки приводят к ошибке: www.... использует недействительный сертификат безопасности. Сертификат не является доверенным, поскольку сертификат эмитента неизвестен. Возможно, сервер не отправляет соответствующие промежуточные сертификаты. Возможно, потребуется импортировать дополнительный корневой сертификат. Код ошибки: SEC_ERROR_UNKNOWN_ISSUER - person Michael; 29.09.2016