Nginx Apache SSL настройка

Nginx Apache SSL настройка

SSL сертификат — это круто, модно, а еще безопасно и его рекомендует использовать google. Сегодня я опишу как установить SSL сертификат на свой сервер c apache + nginx.

Для начала сертификат нужно купить, я это сделал у своего любимого хостера, ссылочка на него в боковой колонке, обошелся он мне всего в 400р, на хабре есть описание как получить сертификат бесплатно, но поверьте проще его купить).

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

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

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

www_myitstuff_ru_private.key

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

cat www_myitstuff_ru.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt >  myitstuff_ru.ca-bundle

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

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

  1. Проверьте, какой веб сервер работает на 443 (SSL) порту, для этого в терминале введите команду:

    для Linux:

    netstat -napt | grep 443

    для FreeBSD:

    sockstat | grep 443
  2. Если на 443 порту весит apache, то зайдите в файл:
    /etc/apache2/ports.conf

    Закомментируйте строку:

    Listen 443
  3. Так как ssl-соединениями будет заниматься nginx, то настройки производятся только в его конфиге:
    /etc/nginx/sites-available/myitstuff.ru

    Настройки Nginx для работы с SSL:

    # Настраиваем редирект с http на htps
    server {
        listen 80;
        root /home/myitstuff/myitstuff.ru/public_html;  # путь к папке с сайтом
        server_name myitstuff.ru www.myitstuff.ru; # доменные имена
        return 301 https://myitstuff.ru$request_uri; # непосредственно редирект на https
    
    }
    
    server {
        listen 443;
        server_name   myitstuff.ru www.myitstuff.ru;
    
        ssl  on; # включаем поддержку ssl
        ssl_certificate /etc/ssl/crt/myitstuff_ru.ca-bundle; # файл цепочки сертификатов
        ssl_certificate_key     /etc/ssl/crt/www_myitstuff_ru_private.key; # приватный ключ
    
        ......... остальные настройки .........
    }
  4. Перезагрузите apache и nginx:
    /etc/init.d/apache2 restart
    /etc/init.d/nginx restart
  5. Проверьте правильность установки сертификата на сайте www.sslshopper.com/ssl-checker.html

    Если все сделали верно, то увидите примерно следующее:

Комментарии ()