Настройка связки Apache+NGINX+SSL

Самый дешевый SSL сертификат Comodo PositiveSSL и после оплаты получается набор из 4 файлов:

  • AddTrustExternalCARoot.crt
  • COMODORSAAddTrustCA.crt
  • COMODORSADomainValidationSecureServerCA.crt
  • domain_name.crt – сертификат для моего домена

Приватный ключ был выдан отдельно, его нужно сохранить в текстовый файл, например:

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

В результате выполнения этой команды в каталоге будет создан файл domain.ca-bundle с цепочкой сертификатов.

Сертификаты есть, цепочку создали, осталось указать их в настройках сервера (apache + nginx):

  1. Проверьте, какой веб сервер работает на 443 (SSL) порту, для этого в терминале введите команду:для Linux:
    для FreeBSD:
  2. Если на 443 порту весит apache, то зайдите в файл:
    Закомментируйте строку:
  3. Так как ssl-соединениями будет заниматься nginx, то настройки производятся только в его конфиге:
    Настройки Nginx для работы с SSL:
  4. Перезагрузите apache и nginx:
  5. Проверьте правильность установки сертификата на сайте www.sslshopper.com/ssl-checker.html

Сложности начались при работе ajax. Асинхронные запросы к серверу выполнялись с префиксом http:// что вызывало губительный для ajax редирект 301. Появилась необходимость передавать переменные окружения, в частности имя протокола, из nginx в apache, сделано это было так:
в nginx:

Самое главное в apache надо в определении виртуального хоста прописать:

Теперь все ajax запросы идут на https:// что и требовалось. Для этого трюка модуль apache setenvif_module должен быть установлен и включен в конфиге:

LoadModule setenvif_module libexec/apache22/mod_setenvif.so

Также стоит иметь ввиду что некоторые приложения могут сами определять свой путь по переменным окружения. Так например phpMyAdmin, так нужный разработчикам ресурса, в случае если у него в конфиге не указан полный путь будет формировать его сам с указанием порта.

Еще не стоит забывать о передаче реальных IP адресов посетителей в apache для сохранения имеющейся схемы ведения логов. Это расписано неоднократно, копайте в сторону модуля apache rpaf_module.

Стоит еще заметить, что для работы необходимо наличие открытого портала в фаерволе, для этого проверяет список того, что открыто (для Linux CentsOS < 7): /etc/sysconfig/iptables или команда для просмотра iptables -L -n (где n – это ключ для того, что бы адреса и порты выводились в числовом виде). Перезагрузка через команду service iptables restart и\или service ip6tables restart

 

Обсуждение закрыто.