SSL: не удается загрузить файл сертификата ЦС /etc/pki/tls/certs/ca-bundle.crt

На моей локальной машине разработки (osx) я использую jboss для серверных веб-служб на 8443. Когда я нажимаю URL-адреса напрямую, я получаю ответы json, которые ищу. Архитектура, которую мы используем, включает средний уровень (apache / php), который выполняет аутентификацию и маршрутизацию. Если что-то аутентифицируется, он пересылает запрос на бэкэнд.

Когда я работал с apache на 80-м порту и jboss на 8081 (используя http). У меня все работало нормально. Теперь, когда я пытаюсь использовать 8443, ничего не работает.

Недавно я изменил бэкэнд на сервер через https (8443) вместо http (8081). Я могу напрямую отправлять запросы на https 8443 и получать ответ json. Когда я нажимаю apache и он аутентифицируется, а затем пытается перенаправить на https 8443, я получаю следующее сообщение от инспектора Chrome: «SSL: не удается загрузить файл сертификата CA /etc/pki/tls/certs/ca-bundle.crt».

введите описание изображения здесь

Мой виртуальный хост настроен на перехват *: 80 запросов. Я думаю, мне может потребоваться настроить vhosts для приема 443 запросов или установить ca-certificates, как описано в Как работать с сертификатами с помощью cURL при попытке доступа к URL-адресу HTTPS?. Я ищу, знает ли кто-нибудь, в каком правильном направлении должно быть.

Когда я смотрю в файловую систему, файл /etc/pki/tls/certs/ca-bundle.crt не существует. Когда я делаю запрос на средний уровень, я вижу, что запрос попадает в /var/log/apache2/access_log, а в /var/log/apache2/error_log ничего не появляется.

Что нужно для решения этой проблемы? Это конфигурация vhosts для перехвата запросов к 443? Это для установки CA-Cert, как в ссылке? Комбинация того и другого? Или что-то другое? Пожалуйста, предоставьте достаточно информации о том, как решить эту проблему, или предоставьте ссылки, которые предоставляют достаточно информации.


person James Oravec    schedule 05.04.2016    source источник


Ответы (1)


Я решил свою проблему и отправляю сообщение для документации на случай, если у кого-то есть похожие проблемы. Чтобы исправить это, мне пришлось решить несколько проблем.

Установка PHP

Моя /etc/apache2/httpd.conf ссылалась на мою установку osx php по умолчанию вместо моей домашней установки php. Решением было отредактировать httpd.conf и указать его на правильную установку.

#LoadModule php5_module /usr/local/opt/php53/libexec/apache2/libphp5.so
LoadModule php5_module /usr/local/Cellar/php53/5.3.29_4/libexec/apache2/libphp5.so

Вы можете создать аналогичную настройку php, используя домашнее пиво, с помощью следующих команд:

brew install homebrew/php/php53
brew install homebrew/php/php53-igbinary --build-from-source
brew install homebrew/php/php53-intl
brew install homebrew/php/php53-mcrypt
brew install homebrew/php/php53-memcached
brew install homebrew/php/php53-mongo
brew install homebrew/php/php53-xdebug

Создайте файл пакета сертификатов CA

Система ищет /etc/pki/tls/certs/ca-bundle.cert, который является стандартным путем для Linux, но не для OSX. Мы обходим это путем создания файла.

Я создал .keystore файл с помощью keytool и использовал jboss в качестве псевдонима. Чтобы создать файл пакета ca, нам нужно, чтобы он был в формате pem, поэтому нам нужно добавить -rfc в нашу инструкцию экспорта. Ниже приведены команды:

cd /usr/local/jboss-eap-6.4/standalone/configuration
keytool -export -alias jboss -file local-sbx.dev.yourcompany.com.crt -keystore .keystore -rfc

После того, как у вас есть файл, вы можете проверить его и убедиться, что в файле есть элементы BEGIN CERTIFICATE и END CERTIFICATE. Если да, то в правильном формате.

Наконец, создайте структуру каталогов, переместите сертификат, чтобы он действовал как пакет (который представляет собой просто набор сертификатов, добавленных друг к другу), а затем перезапустите apache:

mkdir -p /etc/pki/tls/certs/
sudo cp local-sbx.dev.yourcompany.com.crt /etc/pki/tls/certs/ca-bundle.crt
sudo apachectl restart
person James Oravec    schedule 07.04.2016