Внимание! Все действия описанные ниже вы производите на свой страх и риск! Я не несу никакой ответственности за ваши кривые руки! Перед установкой обязательно сделать бекапы сервака, базы, сайта и всего, что вы можете повредить.
Так-же здесь обсуждаются чисто технические моменты установки (кто решится) и перехода на SSL протокол https. А весь флуд обсуждаем в этих темах, типа нужен не нужен и т.д.:
1. http://zerocoolpro.biz/forum/threads/kto-nibud-uzhe-postavil-ssl-na-kinosajty.8427/
2. http://zerocoolpro.biz/forum/thread...tsja-dannye-o-kreditnyx-kartax-i-paroli.8482/
Ссылки по теме:
Оф. сайт: https://letsencrypt.org/
Сайт CerBota: https://certbot.eff.org
Сервис проверки класса SSL: https://www.ssllabs.com/ssltest/index.html
Конфигурация сервера на котором вся эта ебля происходила:
ISP-4 + debian-7-amd64 + nginx (фронт) + apache (бэк)
Поехали....
Глава первая: Получение сертификата и адаптация сайта для его использования.
1. Подключаемся к сайту под рутом SSH через PuTty, или любым другим софтом для работы в консоли.
2. Делаем
3. Скачиваем сам CERBOT:
4. Устанвливаем права на CERBOT:
5. Остановить в сервисах панели apache и nginx, или любой другой сервис на порту 443. Если это не сделать, то домен не сможет пройти проверку и будет выдано сообщение что порт 443, занят.
6. Пытаемся получить сертификат:
Будет установлен cerbot-auto и обновлено куча пакетов debian.
где:
указываем ваш домен с www и без.
ваша админ почта по домену, либо любой другой адрес для аккаунта в LetsenScript
7. Если все прошло удачно, вы должны получить примерное сообщение о том что сертификат выдан:
Сам сертификат, ключ, аккаунт будут находится в /etc/letsencrypt, примерно так:
8. Теперь нужно добавить (активировать) сертификат в панели ISPManager, для чего нам нужно, скопировать содержимое, следующих файлов находящихся в /etc/letsencrypt/archive/ваш_домен/:
cert1.pem - сам сертификат
chain1.pem - промежуточный сертификат центра сертификации (цепочка)
privkey1.pem - приватный ключ к сертификату
9. Входим в панель с правами пользователя:
10. Переходим в раздел SSL сертификаты:
нажимаем кнопку создать и выбираем вкладку Тип сертификата существующий. Имя любое чтобы не запутаться, ну например название домена.
11. В поле Приватный ключ вставляем инфу из privkey1.pem, в поле сертификат добавляем инфу из cert1.pem, поле пароль оставляем пустым, в поле цепочка сертификатов добавляем инфу из chain1.pem, примерно как на скриншоте:
и нажимаем ок.
12. Сертификат отобразится в вашей панели как не установленный:
13. Теперь остается подключить его к домену, и проверить работу сайта с https. Для чего переходим в раздел домены, выбираем домен жертву, и нажимаем Изменить, и активируем галочку SSL, порт 443, сертификат выбираем наш ранее добавленный:
и нажимаем ок.
14. Сервер должен автоматически перезагрузится (произойдет рестарт nginx), и возле домена появится ярлычок ssl:
15. Не забываем что у нас на бекэнде работает Apache, и для нормальной обработки на сайте ajax запросов (чтобы они шли тоже через https), в конфиг по домену, в виртуальный хост требуется добавить следующую директиву:
Для чего возвращаемся в панель под root, переходим во вкладку домены, выбираем домен жертву, и нажимаем конфиг. Во вкладке Apache, там где виртуальный хост добавляем нашу директиву
нажимаем ок, и переходим во вкладку сервисы и делаем перезагрузку Apache.
16. После всех проделанных манипуляций пробуем открыть наш сайт по протоколу https. Переходим в Админку, настройка системы Домашняя страница сайта: и указываем наш домен с https:
Нажимаем сохранить очищаем кеш в админке, в браузере и вообще везде где можно.
17. Если все сделано правильно, переходим в адресную строку, и набираем наш сайт с https, и видим замочек и следующее, как на скриншоте:
Так должно быть на всех страницах. Проверяем все страницы сайта, во всех браузерах, включая мобильные, на планшете и смартфоне. Сайт везде должен нормально работать с https.
18. Однако на главной странице сайта, и прочих (не знаю как у вас) соединение может быть не полностью защищено, так как некоторые картинки или скрипты до сих пор могут подгружаться на сайт по старому протоколу http. Более того блокируются видео с Ютубе, которые были добавлены на сайт стандартным способом, на старых версиях движка (в данном случае у меня trial 10.3) они шли по старому протоколу с http. И тогда мы видим следующее:
Это называется смешанный контент, т.е. сайт работает с https, а картинки и некоторые скрипты по http, и от этого нам нужно избавится. Я здесь не буду расписывать как это все поправить, об этом вы сможете почитать в этой статье:
https://artemmian.ru/656-dle-na-https-osnovnye-problemy-i-ih-reshenie.html
Хотя официальная поддержка DLE утверждает что их движок полностью работоспособен по протоколу https:
http://forum.dle-news.ru/topic/69025-переход-с-http-на-https/
Возможно если у вас версия движка 11.2 и вы ставите сайт с нуля, вы с подобными проблемами не столкнетесь, однако на уже работающих проектах, есть такие проблемы. Еще хуже, если вы свои картинки храните на внешних хостингах картинок типа FastPic которые до сих пор висят на http.
19. Я исправил все проблемы по п.18, так как у меня новостей всего 5, а статических страниц тоже немного, и теперь нам нужно настроить правильно 301 редирект, что-бы не потерять в трафике, и отправить наш сайт на переиндексацию в Вебмастер Яндекс и Google. Для этого в корневой .htaccess добавляем такую конструкцию, которая у меня заработала нормально, в самом верху после RewriteEngine On:
Так как я давно хотел избавится от сайта c www, и я все равно попадаю на переиндекс, я ниже добавил следующую конструкцию, редиректа с www на без www:
20. Далее идем в вебмастер яндекса, и ставим в разделе Переезд, чтобы сайт отображался с https, и ждем переиндекс (обычно 2-3 недели если страниц много), а в вебмастере Google просто тупо удаляем свой старый сайт c http, и добавляем с https на индексацию, ну далее по накатаной, подтверждаем права отправляем новый сайтмап и прочее (здесь можете со мной не согласится), а да совсем забыл, нужно подправить директивы в robots.txt:
Вы указываете свой домен естно )))
Если у Вас возникнут проблемы с Яндекс, и будет ошибка загрузки robots.txt, то нужно из редиректа исключить, сам robots.txt, что-бы он отдавался по http, тогда конструкция в .htaccess будет выглядеть так:
Но я это сделал заранее, так как уже столкнулся с подобной проблемой на прикручивании SSL к https://sovtor.com/
21. Так как Сертификат LetsenCript имеет срок всего 3 мес., то его необходимо продлить, это можно сделать из консоли, командой:
или добавить автоматическое обновление с выполнением 1 раз в мес, в серверный крон:
!не забываем остановить сервисы на 443 порту перед выполнением!
но я пока эти команды не проверял...)))
22. Самым последним шагом из этой всей эпопеей, это проверить какой же класс получился у сертификата, и правильные ли настройки сервера для работы по SSL. Для этого переходим на этот сервис:
https://www.ssllabs.com/ssltest/index.html
и проверяем наш домен, результаты проверки на скриншоте:
Как видно сертификат получил всего лишь класс С . Читайте ниже как поднять класс до A+ и тонко отстроить nginx для работы сайта c SSL протоколом.
23. Ну и как работает сайт на DLE 10.3 tiral с сертификатом SSL можете посмотреть сами: https://bppa.agency
Глава вторая: Повышаем класс сертификата до А+, и правильно настраиваем nginx для работы по протоколу SSL
Я не буду здесь детально расписывать смысл каждой директивы для nginx, о них вы можете прочитать в этой статье: https://webshake.ru/post/175 или в этой https://habrahabr.ru/post/252821/
1. Снова подключаемся по SSH под рутом к нашему серверу, и генирируем ключ Диффи-Хеллмана c длиной не менее 2048 бит:
где путь /var/www/httpd-cert/dr_brown/ указываем свой, у меня именно в этом месте сложены сертификат и ключи, которые уже подключены к домену.
2. После идем в /ect/nginx/ и открываем файл конфигурации nginx.conf и в секцию http { примерно после Virtual Host Configs добавляем следующие директивы:
3. Идем в секцию server { нашего домена, и ищем где уже подключен наш сертификат и ключ, должно быть примерно следующее:
4. Добавляем сюда ниже следующие директивы:
чтобы выглядело так:
5. Сохраняем и проверяем конфиг nginx, командой из консоли:
если никаких ошибок нет, делаем рестарт nginx из панели, или в консоли:
6. Снова проверяем работоспособность сайта, затем идем сюда
https://www.ssllabs.com/ssltest/index.html
и заново проверяем наш домен:

и как видим, мы получили класс A+.
На этом все, ничего сложного все невозможное просто!
Да и ещё забыл дописать, если вы используете серверный крон, например для генерации сайтмапа, то он тоже без ошибок должен работать по https.
Так как у меня роботс txt Яшка не принимал, с конструкций описанной выше, где мы его исключали из редиректа, пришлось в хтасесе написать так:
так как у меня ещё конструкция была на исключение www, но а у вас должно все работать.
Выразить благодарность можно по следующим реквизитам:
ЯД: 410011667726402
WMR: R299593801566
Так-же здесь обсуждаются чисто технические моменты установки (кто решится) и перехода на SSL протокол https. А весь флуд обсуждаем в этих темах, типа нужен не нужен и т.д.:
1. http://zerocoolpro.biz/forum/threads/kto-nibud-uzhe-postavil-ssl-na-kinosajty.8427/
2. http://zerocoolpro.biz/forum/thread...tsja-dannye-o-kreditnyx-kartax-i-paroli.8482/
Ссылки по теме:
Оф. сайт: https://letsencrypt.org/
Сайт CerBota: https://certbot.eff.org
Сервис проверки класса SSL: https://www.ssllabs.com/ssltest/index.html
Конфигурация сервера на котором вся эта ебля происходила:
ISP-4 + debian-7-amd64 + nginx (фронт) + apache (бэк)
Поехали....
Глава первая: Получение сертификата и адаптация сайта для его использования.
1. Подключаемся к сайту под рутом SSH через PuTty, или любым другим софтом для работы в консоли.
2. Делаем
Код:
apt-get update
3. Скачиваем сам CERBOT:
Код:
wget https://dl.eff.org/certbot-auto
4. Устанвливаем права на CERBOT:
Код:
chmod a+x certbot-auto
5. Остановить в сервисах панели apache и nginx, или любой другой сервис на порту 443. Если это не сделать, то домен не сможет пройти проверку и будет выдано сообщение что порт 443, занят.
6. Пытаемся получить сертификат:
Код:
./certbot-auto certonly --standalone -d bppa.agency -d www.bppa.agency --email [email protected].
Будет установлен cerbot-auto и обновлено куча пакетов debian.
где:
Код:
-d bppa.agency -d www.bppa.agency
Код:
--email
ваша админ почта по домену, либо любой другой адрес для аккаунта в LetsenScript
7. Если все прошло удачно, вы должны получить примерное сообщение о том что сертификат выдан:
Сам сертификат, ключ, аккаунт будут находится в /etc/letsencrypt, примерно так:
8. Теперь нужно добавить (активировать) сертификат в панели ISPManager, для чего нам нужно, скопировать содержимое, следующих файлов находящихся в /etc/letsencrypt/archive/ваш_домен/:
cert1.pem - сам сертификат
chain1.pem - промежуточный сертификат центра сертификации (цепочка)
privkey1.pem - приватный ключ к сертификату
9. Входим в панель с правами пользователя:
10. Переходим в раздел SSL сертификаты:
нажимаем кнопку создать и выбираем вкладку Тип сертификата существующий. Имя любое чтобы не запутаться, ну например название домена.
11. В поле Приватный ключ вставляем инфу из privkey1.pem, в поле сертификат добавляем инфу из cert1.pem, поле пароль оставляем пустым, в поле цепочка сертификатов добавляем инфу из chain1.pem, примерно как на скриншоте:
и нажимаем ок.
12. Сертификат отобразится в вашей панели как не установленный:
13. Теперь остается подключить его к домену, и проверить работу сайта с https. Для чего переходим в раздел домены, выбираем домен жертву, и нажимаем Изменить, и активируем галочку SSL, порт 443, сертификат выбираем наш ранее добавленный:
и нажимаем ок.
14. Сервер должен автоматически перезагрузится (произойдет рестарт nginx), и возле домена появится ярлычок ssl:
15. Не забываем что у нас на бекэнде работает Apache, и для нормальной обработки на сайте ajax запросов (чтобы они шли тоже через https), в конфиг по домену, в виртуальный хост требуется добавить следующую директиву:
Код:
SetEnvIf X-Forwarded-Proto https HTTPS=on
Для чего возвращаемся в панель под root, переходим во вкладку домены, выбираем домен жертву, и нажимаем конфиг. Во вкладке Apache, там где виртуальный хост добавляем нашу директиву
нажимаем ок, и переходим во вкладку сервисы и делаем перезагрузку Apache.
16. После всех проделанных манипуляций пробуем открыть наш сайт по протоколу https. Переходим в Админку, настройка системы Домашняя страница сайта: и указываем наш домен с https:
Нажимаем сохранить очищаем кеш в админке, в браузере и вообще везде где можно.
17. Если все сделано правильно, переходим в адресную строку, и набираем наш сайт с https, и видим замочек и следующее, как на скриншоте:
Так должно быть на всех страницах. Проверяем все страницы сайта, во всех браузерах, включая мобильные, на планшете и смартфоне. Сайт везде должен нормально работать с https.
18. Однако на главной странице сайта, и прочих (не знаю как у вас) соединение может быть не полностью защищено, так как некоторые картинки или скрипты до сих пор могут подгружаться на сайт по старому протоколу http. Более того блокируются видео с Ютубе, которые были добавлены на сайт стандартным способом, на старых версиях движка (в данном случае у меня trial 10.3) они шли по старому протоколу с http. И тогда мы видим следующее:
Это называется смешанный контент, т.е. сайт работает с https, а картинки и некоторые скрипты по http, и от этого нам нужно избавится. Я здесь не буду расписывать как это все поправить, об этом вы сможете почитать в этой статье:
https://artemmian.ru/656-dle-na-https-osnovnye-problemy-i-ih-reshenie.html
Хотя официальная поддержка DLE утверждает что их движок полностью работоспособен по протоколу https:
http://forum.dle-news.ru/topic/69025-переход-с-http-на-https/
Возможно если у вас версия движка 11.2 и вы ставите сайт с нуля, вы с подобными проблемами не столкнетесь, однако на уже работающих проектах, есть такие проблемы. Еще хуже, если вы свои картинки храните на внешних хостингах картинок типа FastPic которые до сих пор висят на http.
19. Я исправил все проблемы по п.18, так как у меня новостей всего 5, а статических страниц тоже немного, и теперь нам нужно настроить правильно 301 редирект, что-бы не потерять в трафике, и отправить наш сайт на переиндексацию в Вебмастер Яндекс и Google. Для этого в корневой .htaccess добавляем такую конструкцию, которая у меня заработала нормально, в самом верху после RewriteEngine On:
Код:
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Так как я давно хотел избавится от сайта c www, и я все равно попадаю на переиндекс, я ниже добавил следующую конструкцию, редиректа с www на без www:
Код:
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ https://%1/$1 [L,R=301]
20. Далее идем в вебмастер яндекса, и ставим в разделе Переезд, чтобы сайт отображался с https, и ждем переиндекс (обычно 2-3 недели если страниц много), а в вебмастере Google просто тупо удаляем свой старый сайт c http, и добавляем с https на индексацию, ну далее по накатаной, подтверждаем права отправляем новый сайтмап и прочее (здесь можете со мной не согласится), а да совсем забыл, нужно подправить директивы в robots.txt:
Код:
Host: https://bppa.agency
Sitemap: https://bppa.agency/sitemap.xml
Вы указываете свой домен естно )))
Если у Вас возникнут проблемы с Яндекс, и будет ошибка загрузки robots.txt, то нужно из редиректа исключить, сам robots.txt, что-бы он отдавался по http, тогда конструкция в .htaccess будет выглядеть так:
Код:
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{REQUEST_URI} !^/robots.txt
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Но я это сделал заранее, так как уже столкнулся с подобной проблемой на прикручивании SSL к https://sovtor.com/
21. Так как Сертификат LetsenCript имеет срок всего 3 мес., то его необходимо продлить, это можно сделать из консоли, командой:
Код:
./certbot-auto renew --dry-run
или добавить автоматическое обновление с выполнением 1 раз в мес, в серверный крон:
Код:
./certbot-auto renew --quiet --no-self-upgrade
!не забываем остановить сервисы на 443 порту перед выполнением!
но я пока эти команды не проверял...)))
22. Самым последним шагом из этой всей эпопеей, это проверить какой же класс получился у сертификата, и правильные ли настройки сервера для работы по SSL. Для этого переходим на этот сервис:
https://www.ssllabs.com/ssltest/index.html
и проверяем наш домен, результаты проверки на скриншоте:
Как видно сертификат получил всего лишь класс С . Читайте ниже как поднять класс до A+ и тонко отстроить nginx для работы сайта c SSL протоколом.
23. Ну и как работает сайт на DLE 10.3 tiral с сертификатом SSL можете посмотреть сами: https://bppa.agency
Глава вторая: Повышаем класс сертификата до А+, и правильно настраиваем nginx для работы по протоколу SSL
Я не буду здесь детально расписывать смысл каждой директивы для nginx, о них вы можете прочитать в этой статье: https://webshake.ru/post/175 или в этой https://habrahabr.ru/post/252821/
1. Снова подключаемся по SSH под рутом к нашему серверу, и генирируем ключ Диффи-Хеллмана c длиной не менее 2048 бит:
Код:
openssl dhparam -out /var/www/httpd-cert/dr_brown/dh2048.pem 2048
где путь /var/www/httpd-cert/dr_brown/ указываем свой, у меня именно в этом месте сложены сертификат и ключи, которые уже подключены к домену.
2. После идем в /ect/nginx/ и открываем файл конфигурации nginx.conf и в секцию http { примерно после Virtual Host Configs добавляем следующие директивы:
Код:
ssl_prefer_server_ciphers on;
ssl_session_cache shared:TLS:2m;
ssl_session_cache shared:SSL:2m;
ssl_session_timeout 24h;
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
ssl_ciphers kEECDH+AES128:kEECDH:kEDH:-3DES:kRSA+AES128:kEDH+3DES:DES-CBC3-SHA:!RC4:!aNULL:!eNULL:!MD5:!EXPORT:!LOW:!SEED:!CAMELLIA:!IDEA:!PSK:!SRP:!SSLv2;
3. Идем в секцию server { нашего домена, и ищем где уже подключен наш сертификат и ключ, должно быть примерно следующее:
Код:
........
listen 91.223.180.64:443 ssl;
.......
.......
.......
ssl_certificate /var/www/httpd-cert/dr_brown/bppa.chained.crt;
ssl_certificate_key /var/www/httpd-cert/dr_brown/bppa.key;
4. Добавляем сюда ниже следующие директивы:
Код:
ssl_dhparam /var/www/httpd-cert/dr_brown/dh2048.pem;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
add_header Content-Security-Policy-Report-Only "default-src https:; script-src https: 'unsafe-eval' 'unsafe-inline'; style-src https: 'unsafe-inline'; img-src https: data:; font-src https: data:; report-uri /csp-report";
чтобы выглядело так:
Код:
........
listen 91.223.180.64:443 ssl;
.......
.......
.......
ssl_certificate /var/www/httpd-cert/dr_brown/bppa.chained.crt;
ssl_certificate_key /var/www/httpd-cert/dr_brown/bppa.key;
ssl_dhparam /var/www/httpd-cert/dr_brown/dh2048.pem;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
add_header Content-Security-Policy-Report-Only "default-src https:; script-src https: 'unsafe-eval' 'unsafe-inline'; style-src https: 'unsafe-inline'; img-src https: data:; font-src https: data:; report-uri /csp-report";
5. Сохраняем и проверяем конфиг nginx, командой из консоли:
Код:
nginx -t
если никаких ошибок нет, делаем рестарт nginx из панели, или в консоли:
Код:
service nginx restart
6. Снова проверяем работоспособность сайта, затем идем сюда
https://www.ssllabs.com/ssltest/index.html
и заново проверяем наш домен:

и как видим, мы получили класс A+.
На этом все, ничего сложного все невозможное просто!
Да и ещё забыл дописать, если вы используете серверный крон, например для генерации сайтмапа, то он тоже без ошибок должен работать по https.
Так как у меня роботс txt Яшка не принимал, с конструкций описанной выше, где мы его исключали из редиректа, пришлось в хтасесе написать так:
Код:
<FilesMatch "robots.txt$">
RewriteEngine off
</FilesMatch>
так как у меня ещё конструкция была на исключение www, но а у вас должно все работать.
Выразить благодарность можно по следующим реквизитам:
ЯД: 410011667726402
WMR: R299593801566
Последнее редактирование:

