1. Приветствуем Вас на неофициальном форуме технической поддержки XenForo на русском языке. XenForo - коммерческий форумный движок от бывших создателей vBulletin, написанный на PHP.

Переходим на HTTPS

Тема в разделе "Советы, руководства и видео-уроки", создана пользователем infis, 23.10.2016.

Загрузка
  1. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 943
    Симпатии:
    3 524
    Версия XF:
    1.5.9
    Всем привет!

    Сегодня заморочился переводом сайта на HTTPS. В связи с чем был куплен сертификат, а также произведены настройки nginx и XenForo. Сразу оговорюсь, что речь идет о своем сервере, а не о шаред-хостинге. Чтобы не было глупых вопросов.

    Итак, начнем.

    1. Сначала генерируем CSR и личный ключ (private key). CSR - это текстовая информация о Вас и Вашем домене. Для этого я воспользовался Online CSR generator. Заполняйте там все по честному. Имя сервера указывайте полностью. То есть, если это https://www.domen.ru, то именно так и указываем, а не https://domen.ru. На экране Вам покажут Ваши ключи, скопируйте их куда-либо в укромное место, отправьте себе на почту. В любом случае Вам будут необходимы и CSR и приватный ключ позже. Система у себя их не хранит.

    2. Идем на сайт продавца SSL сертификатов. Я выбрал GoGetSSL. Не знаю, насколько он хорош, но по цене он меня вполне устроил. За 3 года заплатил менее 1000 рублей ($13.85).

    3. Там заказываем нужный сертификат. Я выбрал Comodo PositiveSSL. Если планируете долговременный проект, то лучше покупайте сразу на 3 года. Экономия очень существенна. После выбора сертификата и его оплаты, переходим к заполнению данных. Там в принципе все просто. Заносим ранее сгенерированный CSR, имя сайта и административный e-mail. Он должен быть на том же домене, что и сайт. Верификацию сайта можно делать через email, запись DNS или файл на сайте. Я выбрал верификацию через DNS. После внесения изменений в DNS пробуем пройти проверку. Если все правильно, то система подтвердит верификацию.

    4. Пройдя последний этап заполнения данных, система сгенерирует Ваши сертификаты. Получить их Вы можете в своем кабинете. Manage SSL certificates -> View -> Download SSL. Из скачанного архива нам понадобится только AddTrustExternalCARoot.crt.

    5. По почте придет письмо с архивом. В полученном архиве будут содержаться два файла: domain_com.crt и domain_com.ca-bundle. Их необходимо будет скопировать на свой сервер.

    6. Теперь пришел черед настройки nginx. Я использую Debian, но по сути в разных ОС настройки nginx практически идентичны. Итак, в первую очередь в /etc/nginx/sites-available создаем копию конфиг Вашего сайта. Я назвал конфиг как-то так: mysite.ru-ssl. То есть добавил к названию -ssl. В принципе это делать не обязательно, просто я предпочел сделать отдельные конфиги для http и https, которые можно легко переключать при необходимости. Для того, чтобы не изобретать велосипед, проще воспользоваться сервисом генерации SSL конфига для nginx (поддерживаются и другие веб-серверы). Там укажите нужный профиль (я выбрал Intermediate, чтобы поддерживать не только современные браузеры). Также желательно указать версии nginx и OpenSSL. Версии влияют на генерируемый конфиг. Получаем нечто такое:
    Код:
    server {
        listen 80 default_server;
        listen [::]:80 default_server;
    
        # Redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
        return 301 https://$host$request_uri;
    }
    
    server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
    
        # certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
        ssl_certificate /path/to/signed_cert_plus_intermediates;
        ssl_certificate_key /path/to/private_key;
        ssl_session_timeout 1d;
        ssl_session_cache shared:SSL:50m;
        ssl_session_tickets off;
    
        # Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits
        ssl_dhparam /path/to/dhparam.pem;
    
        # intermediate configuration. tweak to your needs.
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
        ssl_prefer_server_ciphers on;
    
        # HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
        add_header Strict-Transport-Security max-age=15768000;
    
        # OCSP Stapling ---
        # fetch OCSP records from URL in ssl_certificate and cache them
        ssl_stapling on;
        ssl_stapling_verify on;
    
        ## verify chain of trust of OCSP response using Root CA and Intermediate certs
        ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;
    
        resolver <IP DNS resolver>;
    
        ....
    }
    Правим его под себя. То, что было у Вас в старом конфиге, почти полностью переносим туда, где видим 4 точки, оставив первые строки с Listener в первой секции server. Теперь в конфиге заменяем /path/to/ на свои пути к сертификатам и приватному ключу. Также мне потребовалось изменить http2 на spdy в двух строках. Если Вы не используете какой-то иной DNS-сервер для ngninx, то уберите строку:
    Код:
    resolver <IP DNS resolver>;
    7. Теперь пара слов о том, какие файлы куда подставлять.

    Во-первых, нужно сначала два файла из архива (пункт 5 настоящего руководства) объединить в один командой:
    Код:
    cat domain_com.crt domain_com.ca-bundle > server.crt
    Во-вторых, создаем server.key, в который нужно скопировать полученный ранее личный ключ (private key).
    В-третьих, нужно сгенерировать dhparam.pem:
    Код:
    openssl dhparam -out /path/to/dhparam.pem 4096
    Операция очень длительная, но Вы не волнуйтесь :)

    Краткий список строк из конфига, в котором нужно будет поправить пути и названия файлов:
    Код:
        ssl_certificate /path/to/server.crt;
        ssl_certificate_key /path/to/server.key;
        ssl_dhparam /path/to/dhparam.pem;
        ssl_trusted_certificate /path/to/AddTrustExternalCARoot.crt;
    
    Последний файл берем из архива в пункте 4.

    8. Полученный конфиг nginx добавляем в используемые сайты (/etc/nginx/sites-enabled). А старый конфиг оттуда убираем.

    9. Проверяем конфиг командой nginx -t. Если все хорошо, то перезапускаем nginx.

    10. Идем в админку XenForo и меняем там в настройках в "Основная информация о форуме" адрес сайта с http на https.

    На этом всё. Остается только проверить функционирование сайта. Я проверял тут. Моему сайту после всех манипуляций присвоили рейтинг A+. С этим рейтингом не должно быть каких-либо проблем с любыми браузерами, сервисами и поисковиками. Да и самому спокойнее :) Сам XenForo без проблем работает через https.
     
    nikes и Mirovinger нравится это.
  2. CyberAP

    CyberAP Местный

    Регистрация:
    05.10.10
    Сообщения:
    2 603
    Симпатии:
    1 660
    Версия XF:
    1.5.10
    Даже в конфиге не надо было прописывать $_SERVER['HTTPS'] = 'on'; ?
     
  3. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 943
    Симпатии:
    3 524
    Версия XF:
    1.5.9
    Нет. Видимо, это нужно на связке с Apache2 или просто на Apache2. Хотя, возможно в XenForo уже что-то поправили.
     
  4. den1111

    den1111 Пользователь

    Регистрация:
    01.09.16
    Сообщения:
    32
    Симпатии:
    2
    Версия XF:
    1.5.7
    Кстати, я уже здесь где-то писал, что гугл в скором времени, с 2017 года, будет отдавать больший приоритет сайтам с https. Тема актуальная, себе уже установил сертификат.

    Так начинаю размышлять, их же сейчас, америкосов кто попало Ддосит, перед выборами:).
    Вот и постепенно начинают пользователей приучать к защите.
     
  5. ArchitectOfRuin

    ArchitectOfRuin Новичок

    Регистрация:
    24.10.16
    Сообщения:
    3
    Симпатии:
    0
    Версия XF:
    1.5.10
    Еще важно, что Chrome будет с 1 января помечать HTTP-сайты, принимающие пароли или данные кредиток, как небезопасные. Потому надо уже сейчас думать о переезде на HTTPS, особенно разным интернет-магазинам. Без SSL-сертификата потом просто будет нечего ловить.

    Да и Mozilla постепенно подтягивается, тоже недавно была новость про то, что SSL-сертификаты с SHA-1 будут помечаться как недоверенные, даже если раньше к ним было доверие. Это вроде как тоже с 1 января 2017.
     
    Последнее редактирование модератором: 25.10.2016
  6. seal

    seal Местный

    Регистрация:
    26.04.13
    Сообщения:
    44
    Симпатии:
    0
    Версия XF:
    1.1.4
    теперь вопрос как все внутренние ссылки которых море поменять на https ?
     
  7. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 943
    Симпатии:
    3 524
    Версия XF:
    1.5.9
    А зачем? Силами веб-сервера прописывается редирект с http на https и всё.
     
  8. ArchitectOfRuin

    ArchitectOfRuin Новичок

    Регистрация:
    24.10.16
    Сообщения:
    3
    Симпатии:
    0
    Версия XF:
    1.5.10
    Можно с помощью SQL-запросов сменить. К примеру, для изображений это удобно и ссылок на внешние сайты. Иначе будет ошибка со смешанным содержимым.
     
  9. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 943
    Симпатии:
    3 524
    Версия XF:
    1.5.9
    Ну тогда ставить плагин Post Content Find / Replace и им уже. Так проще будет.
    Но и SQL, конечно же, также возможен. Вы такой имели ввиду?
    Код:
    UPDATE xf_post SET message = REPLACE(message,'current_content','new_content');
     
    Mirovinger нравится это.
  10. ArchitectOfRuin

    ArchitectOfRuin Новичок

    Регистрация:
    24.10.16
    Сообщения:
    3
    Симпатии:
    0
    Версия XF:
    1.5.10
    Да, можно плагином тоже.

    Да, именно этот запрос.
     
  11. seal

    seal Местный

    Регистрация:
    26.04.13
    Сообщения:
    44
    Симпатии:
    0
    Версия XF:
    1.1.4
    infis, чтоб не было ошибок со смешанным содержимым.
    --- добавлено : Dec 27, 2016 8:07 AM ---
    ArchitectOfRuin, infis, выложите пожалуйста плагин Post Content Find / Replace. не могу качать с офиц сата.
     
    Последнее редактирование модератором: 04.01.2017
  12. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 943
    Симпатии:
    3 524
    Версия XF:
    1.5.9
  13. seal

    seal Местный

    Регистрация:
    26.04.13
    Сообщения:
    44
    Симпатии:
    0
    Версия XF:
    1.1.4
    infis, на оф сайте есть версия от 15 года. тут от 11
     
  14. Procoder

    Procoder Новичок

    Регистрация:
    25.04.17
    Сообщения:
    24
    Симпатии:
    0
    Версия XF:
    1.5.3
    Установил SSL сертификат, без подобных заморочек)
    Единственное что я сделал прописал $_SERVER['HTTPS'] = 'on';
     
  15. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 943
    Симпатии:
    3 524
    Версия XF:
    1.5.9
    Без каких заморочек? Если что, в статье речь идет о настройке сервера, а не движка. Движок по идее вообще настраивать не надо, за исключением правильной ссылки в настройках форума.

    Если сервером Вы не управляете, то и сделать что-либо Вы ничего не можете. То есть, если поддерживает хостер установку SSL сертификатов, то, соответственно, заказываете сертификат и включаете его в панели хостинга. Естественно, что при отсутствии поддержки хостером SSL сертификатов, о переводе сайта на HTTPS можно просто забыть.
     

Поделиться этой страницей