Сегодня мы разберемся с видами и типами SSL-сертификатов, купим SSL-сертификат от GoGetSSL на 3 года, установим его на домене в ПУ VESTA, настроим работу сайта на 1С Битрикс по защищенному https-протоколу, включая 301-редиректы, карту сайта sitemap.xml и robots.txt
В предыдущей статье я рассказал вам про бесплатный SSL-сертификат от Яндекс.Касса и REG.RU, но т.к. его надо каждый год продлевать, это для нас не очень удобно, год пролетает так быстро, что и глазом не успеешь моргнуть, как год прошел и с ним закончился сертификат, а если у вас интернет-магазин интегрирован с каким-нибудь сервисом по https, например, с Яндекс.Кассой, Яндекс.Маркетом, с платежными системами, то в любой момент синхронизация или оплата может перестать работать, а если разработчик или вы сами в отпуске, решать проблему будет некому.
Виды SSL-сертификатов
Сертификаты есть нескольких видов, вот общеизвестные, с которыми вы столкнетесь
Self-Signed SSL (Самоподписанный сертификат)
Данные сертификаты можно создавать самостоятельно на сервере, никакой подлинности или доверия со стороны браузеров и поисковых систем они не имеют, современные браузеры заблокируют открытие сайта с недоверительным сертификатом, т.к. они про него ничего не знают, каким центром сертификации он выдавался и т.д.
Подходит максимум для тестирования сайта.
Trusted SSL (Доверительный сертификат)
Данные сертификаты выдаются специальными центрами сертификации, они имеют цифровую подпись и печать сертификационного центра, браузеры автоматически их распознают.
В данном сертификате используется два ключа: открытый и секретный (приватный), открытый ключ будет доступен любому пользователю, а секретный только серверу, данная схема и позволяет сохранять секретность передачи/шифрования данных.
Данный сертификат и будем покупать для защиты данных.
Типы SSL-сертификатов
Рассмотрим основной список доверительных сертификатов от официальных центров сертификации, они отличаются помимо назначения, еще и по уровню шифрования и доверия.
Free SSL
Бесплатный SSL-сертификат выдается сроком на 90 дней, аналогичен платным сертификатам с проверкой домена и поддержкой SHA-2, полностью функциональный.
Из сервисов, которые предоставляют рабочие бесплатные сертификаты, можно выделить Let’s Encrypt и Comodo Free SSL.
В панели управления сервером VESTA можно всего в пару кликов установить на домене бесплатный сертификат Let's Encrypt, более подробно читайте в самом низу статьи в разделе Поддержка Lets Encrypt в Vesta
Domain Validation SSL (SSL-сертификаты с проверкой домена)
Сертификаты (DV) самые популярные, с подтверждением только домена, защита распространяется и на поддомены, с www и без www. Данный сертификат не требует подтверждения организации и документов, оформляется на частное лицо или организацию всего за 5 минут.
Данный сертификат подходит для большинства простых сайтов визиток, новостных блогов, форумов, интернет-магазинов, в адресной строке браузер отмечает сайт как "Надежный"
Business Validation SSL (SSL-сертификаты с проверкой компании)
Сертификаты (OV/BV) бизнес-уровня с подтверждением домена и организации, подтверждается домен и его владелец.
Выдача сертификата займет около 2-3 рабочих дней, для получения такого сертификата доменное имя должно быть оформлено на организацию и принадлежать ей, а не на частное лицо.
Данный сертификат подходит для корпоративных сайтов и каких-нибудь веб-сервисов.
Extended Validation SSL (SSL-сертификаты с расширенной проверкой)
Самый престижный и единственный (EV) SSL-сертификат оснащенный зеленой адресной строкой Green Bar с подтвержденным именем организации и домена. Посетители мгновенно обращают внимание на "Зеленую адресную строку".
Это самые надежные сертификаты, статистика показывает, что EV сертификаты могут увеличить продажи до 17,3%. Выдача сертификата займет около 5-7 рабочих дней.
Данный сертификат подходит для банковских систем, финансовых компаний, крупных интернет-магазинов.
Wildcard SSL certificates (SSL-сертификаты c поддержкой субдоменов)
Один такой (WC) сертификат защищает неограниченное количество поддоменов основного домена второго уровня на неограниченном количестве серверов.
Wildcard SSL будет защищать поддомены такого типа: www.tuning-soft.ru, nsk.tuning-soft.ru, msk.tuning-soft.ru, но не будет защищать поддомены выше второго уровня, например: static.nsk.tuning-soft.ru
При заказе такого сертификата в Common Name (CN) необходимо указывать: *.tuning-soft.ru
Mulit-Domain SSL certificates (Мультидоменные UCC/SAN SSL-сертификаты)
Сертификаты (MD) идеальны для защиты мультидоменных проектов, как внешних, так и внутренних (локальных).
В сертификатах GoGetSSL можно защитить до 250 элементов Subject Alternative Name (SAN) с несколькими доменами. Каждый элемент SAN может использоваться как для домена, так и для поддоменов, с www и без www. У некоторых центров сертификации число SAN разное, может быть максимум 4.
Вы можете защитить все свои корпоративные сайты, почтовые серверы и другие системы всего одним SSL-сертификатом.
Мультидоменные сертификаты сейчас более популярны и возможно вытеснят Wildcard сертификаты, компания Comodo уже предлагает Wildcard SAN сертификат, способный защищать домены и неограниченное количество субдоменов.
Стоит обратить внимание, что по умолчанию продается сертификат с 2-мя/4-мя SAN, этого хватит защитить сайт на домене с www и без www, для остальных доменов надо будет докупать SAN.
SGC SSL Certificates (С принудительно высоким уровнем шифрования SGC)
Сертификаты (SGC) созданы для обеспечения максимальной защиты в 256-бит для устаревших 40-битных браузеров, таких как Microsoft Internet Explorer 5.0 / 6.0.
Такие сертификаты обеспечивают высокий уровень безопасности и совместимости с каждым браузером. Также есть варианты с поддержкой Single Domain, Wildcard и EV SSL с поддержкой SGC.
Данный сертификат подходит для крупных компаний, государственных учреждений, банков и финансовых структур для которых важна наивысшая степень защиты данных, когда пользователи пользуются устаревшими браузерами.
Code Signing SSL Certificates (SSL-cертификаты для разработчиков ПО)
Обеспечивает защиту целостности программного обеспечения, позволяет подписывать код ваших программ и скриптов, которые распространяются в сети, т.е. подтверждает автора программы.
Подписанное программное обеспечение нельзя изменить, не нарушив его целостности, тем самым вы гарантируете его пользователям, что его код не был изменен, что это не подделка содержащая вредоносный код после взлома хакерами, программа создана именно вами и имеет корректную цифровую подпись.
Email & Document Signing (SSL-сертификаты личной аутентификации)
Позволяют подписывать ваши электронные письма или документы, такие как PDF. Рекомендуется использовать их для защиты личной корреспонденции и обеспечения того, чтобы ваши партнеры и конечные пользователи получали электронные письма оригинальные и подписанные вашей личной подписью.
IDN (Internationalized Domain Names)
Сертификаты с поддержкой доменов, в которых содержатся нелатинские символы, в том числе на кириллице, например у нас это все, что оканчивается на .рф
В сервисе GoGetSSL почти все сертификаты поддерживают IDN, проверить это можно здесь в таблице сравнения на вкладке Secondary Properties столбец IDN.
GoGetSSL
Недорогие сертификаты я нашел в GoGetSSL, здесь очень удобно, можно купить на срок от 1 до 3 лет, а может и на 5 лет в будущем, есть необходимые сервисы CSR Generator, CSR Decoder, SSL Checker, можно здесь же сгенерировать CSR запрос, проверить SSL-сертификат, а еще CSR запрос можно сделать на своем сервере и в ПУ Vesta при редактировании домена.
Меня интересует конкретно SSL-сертификат с проверкой домена - Domain Validation SSL, с www и без www, обратите на это внимание, сертификатов сейчас богатый выбор, можно ошибиться с выбором, кратко рассмотрим их различия:
- Проверка домена (Никаких подтверждающих документов);
- Проверка компании (На данный момент внешне ничем не отличается от обычного);
- Особая проверка (Зелёная адресная строка с названием компании);
- Неограниченные субдомены (Это нам не подходит);
- и все остальное нам не нужно.
Изучить подробно все сертификаты и их отличия удобно как в гугле, так и на русской версии сайта rus.gogetssl.com
Для сайтов блогов, статейных, визиток, обычных интернет-магазинов и т.д. вполне подойдет самый дешевый и простой сертификат с проверкой домена DV, для корпоративных сайтов подойдет уже сертификат с проверкой компании BV, а для крутых интернет-магазинов и веб-сервисов уже стоит задуматься о максимальном доверии к сайту, как со стороны покупателей, так и со стороны поисковых систем, это сертификат с расширенной проверкой EV и зеленой адресной строкой.
На сайте много всяких таблиц, сравнений, если у вас какой-то особый случай, еще можете обратить внимание на таблицу сравнения, когда зайдете в какой-то сертификат, конкретно "Технические свойства", тут можно кое-что увидеть, например, поддерживает ли сертификат субдомены, типа: msk.tuning-soft.ru, nsk.tuning-soft.ru
Чаще всего и будет такой выбор, сертификат с поддержкой домена и/или субдоменов, чем больше нужно возможностей, тем дороже будет стоить сертификат.
На Английской версии сайта SSL Certificates мне как-то интересней и наглядней, по цветам можно различать сертификаты, специально так сделано, попробуйте.
Итак, с сервисом мы познакомились, определились с сертификатом, нам нужен SSL-сертификат с проверкой домена DV.
В таблице сразу бросается в глаза три самых дешевых сертификата:
Comodo EssentialSSL - уровень доверия самый высокий и цена на 3 года - $35.35 = $11.78/год
Comodo Positive SSL - уровень доверия поменьше и цена на 3 года - $13.85 = $4.62/год
RapidSSL Standard - уровень доверия еще меньше и цена на 3 года - $22.15 = $7.38/год
Из данных 3-х сертификатов я бы выбрал второй Comodo Positive SSL, т.к. он в разы дешевле и уровень доверия незначительно ниже Comodo EssentialSSL, но это лишь мое личное мнение, вы можете взять Comodo EssentialSSL, если очень хочется побольше доверия и есть средства, почему бы и нет, подумайте.
Но это оказывается еще не все, если перейдете на английскую версию сайта, обратите внимание в меню на бренды, у сервиса оказывается есть сертификаты под своим брендом GoGetSSL, они очень дешевые, еще выше рейтинг, подходят для разных случаев, давайте рассмотрим подходящий нам Domain SSL для одного домена.
GGSSL Domain SSL Certificate - хороший уровень доверия и цена на 3 года - $12.25 = $4.08/год
Мне этот сертификат больше всего понравился, хороший уровень доверия и стоимость на 3 года, его и будем покупать, оплачивал я через PayPal.
Итого за все: 914 руб.
Оформление заказа и покупка SSL-сертификата
Погнали, выбираем 3year и нажимаем Create New Order
Step 1
Здесь жмем Next Step
Step 2
Здесь попросит Войти или Зарегистрироваться, если вы ранее вошли на сайт, этот шаг автоматически система пропустит
Если нужно регистрироваться, жмите Create new account и заполняйте все обязательные поля, возможно запросит подтверждения по ссылке из письма, я уже не помню и на почте не нашел, возможно не попросит.
Step 3
Здесь будет итоговая цена с наценкой/налогом и выбор платежной системы.
Я оплачиваю через PayPal, вы можете выбрать карту VISA или MasterCard, ну и любой другой способ, скорее всего тоже в PayPal отправит.
В PayPal у меня уже привязана карта, я вижу одну кнопку Продолжить, если у вас не привязана карта, то скорее всего попросит ввести данные карты.
После успешной оплаты PayPal видим вот такую страницу успешной оплаты уже в GoGetSSL
И на почту придет пачка писем с квитанциями
Далее жмем Manage SSL и переходим на страницу с сертификатами, который мы только что купили будет в статусе Incomplete + Generate + View
Нажимаем оранжевую кнопку Generate и переходим к странице, где нам нужно Cгенерировать CSR запрос
GGSSL Domain SSL Generation
Step 1
Здесь нам нужно:
1) сначала Cгенерировать CSR запрос на получение сертификата, который представляет из себя закодированный текст с информацией об администраторе домена и открытый ключ;
2) вставить текст в поле Paste your CSR;
3) нажать кнопку Validate CSR.
Напоминаю, что Cгенерировать CSR запрос можно здесь же по ссылке Online CSR Generator, можно на самом сервере в консоли, а можно и в ПУ Vesta.
Сразу возникает вопрос, что тут писать, форма просит контакты, адреса организации и т.д., но т.к. у нас SSL простой, без проверки организации, можно писать вообще любую дребедень, вот только важно все написать на латинском/английском и отправить SCR на e-mail, т.к. он обязательно нам понадобится для генерации и установки сертификата, ну а если даже что-то случится и вы потеряли этот SCR, то сможете в личном кабинете заново пересоздать сертификат с новым SCR запросом.
Online CSR Generator
Заполняем все поля, нажимаем Generate CSR
Вот такой получился Certificate Signing Request (CSR), это первый блок текста от -----BEGIN до END-----
Он же и на почту придет, если поставили соответствующую галку выше на скрине, но лучше пока не закрывайте данное окно, оно ниже нам еще пригодится.
Что нам дает CSR запрос:
Certificate Signing Request (CSR) - нужен для генерации/выпуска SSL-сертификата на сайте GoGetSSL
Private Server Key (RSA) - ключ SSL сертификата, который нужно установить на сервере вместе с сертификатом в панели VESTA
Итак, возвращаемся к #Step 1 и вводим там в поле Paste your CSR блок текста SCR от -----BEGIN до END----- включительно
Step 2
Далее нужно пройти валидацию/подтверждение домена, на выбор несколько способов, ну все как в веб-мастере.
У меня сайт уже работает по https, я выбираю справа в переключателе https, у вас это будет http.
Мне нужно скачать по ссылке файл и залить на сайт по указанному пути, создав соответствующие директории, т.к. я выбрал подтверждение домена файлом.
Нужно сделать так, чтобы сервис увидел этот файл на сайте, был к нему доступ, я подключился к сайту по FTP, создал две директории и залил туда файл, если перейти по этой ссылке, он открывается, файл доступен, можно нажимать Next Step
Можете и через админку Битрикса так сделать, делайте, как вам удобно.
Если выбрать подтверждение домена с помощью E-mail из контактов администратора домена, то конечно нужно иметь доступ к этим ящикам.
Это служебные адреса, у вас скорее всего не будет к ним никакого доступа, но если есть, то это самый простой вариант проверки.
Подтверждение домена через запись в DNS самый сложный и вообще нежелательный способ подтверждения, имейте ввиду, что эти записи обновляются 1-3 дня, вам придется ждать, когда она обновится, только в крайнем случае выбирайте этот способ.
Step 3
Я успешно прошел этап проверки файла, здесь вводим свои контакты для связи или контакты клиента, кому покупали сертификат, без разницы.
Соглашаемся ниже с правилами сервиса и нажимаем Complete Generation
Все, генерация сертификата завершена, жмем Manage SSL
Переходим к сертификату, видим все данные по нему и статус Processing, ждем 3-5 минут выпуск сертификата.
Когда сертификат будет готов, на почту придет еще пачка из 3-х писем с сертификатом
И страница сертификата изменится, сможете кстати отсюда загрузить файлами CSR, CRT, CA и перевыпустить SSL с другими данными, вы полноценный SSL-администратор.
Установка SSL-сертификата в ПУ VESTA
VESTA - это очень простая, понятная и бесплатная панель управления сервером, есть все необходимое для управления сайтами и сервером.
Подробно расписывать как работать с VESTA я думаю не стоит, если вы понимаете о чем речь, значит у вас установлена VESTA и вы скорее всего ей умеете пользоваться, если вы не знаете, что это такое, тогда вам скорее всего надо пообщаться с хостером или администратором своего сайта/сервера, потому что у вас может быть совсем другая панель управления (ПУ) сервером, а может и вообще не быть, в этом случае SSL-сертификаты нужно подключать в nginx или apache2 вручную.
Ну ладно, будем считать, что вы очень крутой (-ая), у вас есть VESTA, вы ей вертите, как захочется, приступим.
Заходим в панель
Переходим в нужного пользователя, у которого нам нужен web-домен для добавления SSL
В моем случает это пользователь tuning я нажимаю кнопку ВОЙТИ КАК TUNING
Я буду добавлять SSL-сертификат к своему домену, домены хранятся в разделе WEB, нажимаю Редактировать напротив этого домена
В настройках домена поставьте галку Поддержка SSL, откроется форма добавления сертификата и приватного ключа (который мы при генерации CSR получили).
Я разметил цифрами блоки, чтобы вы не запутались, что куда добавлять, если сделаете неправильно, всплывет какое-нибудь сообщение с ошибкой, а иначе просто сохранится форма и сообщение будет зеленое типа Информация сохранена
Ну, после успешного добавления сертификата и информационная панель внизу покажет инфу по сертификату, какие алиасы проверяются и интервалы дат, на протяжении которых действителен сертификат.
Ну, самое интересное, найдите в почте вот такое письмо, там их три придет, нужно которое содержит в себе вот это
1) Первый блок - это есть поле SSL сертификат в весте, см. скрин выше.
Нужно скопировать и вставить в весте весь первый блок включая вот эти комментарии -----BEGIN ... END-----
В письме, которое с архивом, это будет все содержимое файла: Your GGSSL Domain SSL - tuning-soft_ru.crt
2) Второй блок - это есть поле Ключ SSL сертификата в весте, см. скрин выше.
Данный ключ мы получили на этапе CSR запрос см. выше раздел Online CSR Generator
Нужно скопировать и вставить в весте этот блок кода включая комментарии -----BEGIN ... END-----
В некоторых CSR генераторах он может начинаться как -----BEGIN RSA PRIVATE KEY----- это тоже самое.
3) Третий блок - это есть поле Центр сертификации SSL / Intermediate в весте, см. скрин выше.
Тоже самое письмо, только там чуть ниже будет склеено два блока, нужно оба блока выделить, скопировать также включая комментарии -----BEGIN ... END----- и вставить в весте.
В письме, которое с архивом, это будет все содержимое файла: Your Apache "bundle" file - tuning-soft_ru.ca-bundle
С сертификатом все!
Проверяем корректность установки SSL-сертификата
Если он успешно добавился в панели VESTA, сайт уже может работать по https протоколу, но не факт, тут смотря, как настроен сервер или Vesta, может и не заработать.
Допустим, вы открываете сайт по https, он открывается и работает, например: https://tuning-soft.ru/
Нужно еще точно проверить, корректно ли установился сертификат, можно каким-нибудь внешним сервисом, например родной от GoGetSSL сервис Check SSL, вот что он показывает.
Еще а я воспользовался вот этим COMODO SSL Analyzer, вот что он показывает.
Подключившись к сайту по FTP/SFTP можно найти вот такие файлы сертификата, они хранятся в папке с конфигами для того домена, для которого добавляли, в папке /home/userID/conf/web
В браузере FireFox проверить SSL-сертификат можно так
Установка mod_ssl в Apache2
У меня после добавления сертификата сайт по https так и не открывался, потому что по умолчанию видимо в апаче отключен модуль SSL
Нужно проделать такие операции в консоли сервера по SSH, включить модуль SSL и перезагрузить Apache2, если модуль не был подключен, консоль все скажет
a2enmod ssl service apache2 restart
Пример конфига хоста sapache2.conf
<VirtualHost 194.1.237.125:8443> ServerName tuning-soft.ru ServerAlias www.tuning-soft.ru ServerAdmin noreply@tuning-soft.ru DocumentRoot /home/tuning/web/tuning-soft.ru/public_html ScriptAlias /cgi-bin/ /home/tuning/web/tuning-soft.ru/cgi-bin/ Alias /vstats/ /home/tuning/web/tuning-soft.ru/stats/ Alias /error/ /home/tuning/web/tuning-soft.ru/document_errors/ ErrorLog /var/log/apache2/domains/tuning-soft.ru.error.log <Directory /home/tuning/web/tuning-soft.ru/public_html> AllowOverride All SSLRequireSSL Options +Includes -Indexes +ExecCGI php_admin_value upload_tmp_dir /home/tuning/web/tuning-soft.ru/tmp php_admin_flag mysql.allow_persistent off php_admin_flag safe_mode off php_admin_value session.save_path /home/tuning/web/tuning-soft.ru/tmp php_admin_value sendmail_path '/usr/sbin/sendmail -t -i -f noreply@tuning-soft.ru' </Directory> <Directory /home/tuning/web/tuning-soft.ru/stats> AllowOverride All </Directory> <Directory "/home/tuning/web/tuning-soft.ru/public_html/print"> php_admin_value mbstring.func_overload 0 Order allow,deny Allow from all </Directory> php_admin_value open_basedir "none" SSLEngine on SSLVerifyClient none SSLCertificateFile /home/tuning/conf/web/ssl.tuning-soft.ru.crt SSLCertificateKeyFile /home/tuning/conf/web/ssl.tuning-soft.ru.key SSLCertificateChainFile /home/tuning/conf/web/ssl.tuning-soft.ru.ca <IfModule mod_ruid2.c> RMode config RUidGid tuning tuning RGroups www-data </IfModule> <IfModule itk.c> AssignUserID tuning tuning </IfModule> Include /home/tuning/conf/web/sapache2.tuning-soft.ru.conf* </VirtualHost>
Установка SSL в nginx
С nginx проблем не было, vesta хост корректно добавила, я только добавил два 301-редиректа, с www на без www и с index.php на /
Пример конфига хоста snginx.conf
server { listen 194.1.237.125:443; server_name tuning-soft.ru www.tuning-soft.ru; root /home/tuning/web/tuning-soft.ru/public_html; index index.php index.html index.htm; error_log /var/log/apache2/domains/tuning-soft.ru.error.log error; ssl on; ssl_certificate /home/tuning/conf/web/ssl.tuning-soft.ru.pem; ssl_certificate_key /home/tuning/conf/web/ssl.tuning-soft.ru.key; #301 редирект с www на без www if ($host = 'www.tuning-soft.ru' ) { rewrite ^(.*)$ https://tuning-soft.ru$1 permanent; } #301 редирект с index.php на / if ($request_uri ~* "^(.*/)index\.php$") { return 301 $1; } location / { proxy_pass https://194.1.237.125:8443; location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|tif|tiff|css|js|htm|html|ttf|otf|webp|woff|txt|csv|rtf|doc|docx|xls|xlsx|ppt|pptx|odf|odp|ods|odt|pdf|psd|ai|eot|eps|ps|zip|tar|tgz|gz|rar|bz2|7z|aac|m4a|mp3|mp4|ogg|wav|wma|3gp|avi|flv|m4v|mkv|mov|mp4|mpeg|mpg|wmv|exe|iso|dmg|swf)$ { root /home/tuning/web/tuning-soft.ru/public_html; access_log /var/log/apache2/domains/tuning-soft.ru.log combined; access_log /var/log/apache2/domains/tuning-soft.ru.bytes bytes; expires max; try_files $uri @fallback; } } location /error/ { alias /home/tuning/web/tuning-soft.ru/document_errors/; } location @fallback { proxy_pass https://194.1.237.125:8443; } location ~ /\.ht {return 404;} location ~ /\.svn/ {return 404;} location ~ /\.git/ {return 404;} location ~ /\.hg/ {return 404;} location ~ /\.bzr/ {return 404;} disable_symlinks if_not_owner from=/home/tuning/web/tuning-soft.ru/public_html; include /home/tuning/conf/web/snginx.tuning-soft.ru.conf*; }
301 редирект в .htaccess
Тут есть нюансы Яндекс рекомендует включать принудительный 301/302 редирект с http на https только после успешной склейки зеркал в веб-мастере.
Но у меня так не получилось, до этого я всегда сразу после установки сертификата включал 301 редирект и никаких проблем не было, проверено на нескольких сайтах, сейчас же никаких уведомлений о склейке мне не приходило, оба домена с http и https проиндексировались и второй был признан дублем, также тиц снизился до 10.
Поэтому, я советую вам включать 301 редирект сразу после установки сертификата, это уже ни раз проверено, но, конечно, ни я, ни Яндекс, никто не гарантирует что все пройдет гладко, в обоих случаях я так понял у людей возникают проблемы с переездом.
Почему 301 редирект, а не 302, думаю тут все будет понятно.
301 Moved Permanently - ресурс перемещен навсегда 302 Moved Temporarily - ресурс перемещен временно
В интернете можно найти запись 301 редиректа с http на https где в конце [QSA,L]
- она неправильная, она как раз отдает 302 заголовок, а нам надо 301, вот такая запись правильная с [R=301,L]
#301 редирект всех запросов с http на https RewriteCond %{HTTPS} =off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Пример конфига .htaccess
<IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine On #301 редирект с index/.php на / RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ RewriteRule ^index\.php$ https://tuning-soft.ru/ [R=301,L] #301 редирект с www на без www RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] #301 редирект всех запросов с http на https RewriteCond %{HTTPS} =off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-l RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$ RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L] RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}] </IfModule>
После настройки 301 редиректа желательно проверить ответ сервера в Яндекс.Вебмастере в разделе Инструменты - Проверка ответа сервера
, картина должна быть такая, отметил стрелками:
Проверяем домен с http, сервер должен вернуть нам 301 редирект, а в локэйшн должен быть домен с https
Теперь проверяем ответ сервера по https, здесь уже будет: код статуса HTTP = 200 OK
robots.txt
В этом файле на забудьте обновить директивы Host
и Sitemap
на новый https-протокол
Директива Sitemap
записывается через 1 пустую строку в самом низу
Host: https://tuning-soft.ru Sitemap: https://tuning-soft.ru/sitemap.xml
sitemap.xml
Обязательно переключите протокол с http на https во всех картах сайта и обязательно пересоздайте карту нажав Сохранить и Запустить, чтобы все карты обновились.
Канонический URL элемента
Еще в новой версии Битрикс есть возможность в настройках каждого инфоблока настроить канонический урл, это нужно, когда один товар/элемент может выводиться на сайте в нескольких разделах, а т.к. это получается все дубли страниц, придумали вот такую настройку, если правильно ее настроить, то в каком бы разделе вы не открыли товар, канонический урл будет всегда указывать на один основной/исходный адрес товара, во всех разделах он будет один, поисковики про это знают и не помечают товар как дубль, увидеть его можно только в исходном коде страницы.
Только вот, не предусмотрели, а может и специально так сделали, еще придется в каждом инфоблоке проверить эту опцию и заменить в ней http на https вручную.
Яндекс.Вебмастер - Переезд сайта
Еще Яндекс рекомендует добавить новый домен с https в панели веб-мастера Яндекс и Гугл, нужно сделать вот такую настройку, нажать Сохранить и появится сообщение.
Нужно сообщить Яндексу как можно скорее, что нужно переехать на новый домен с https, процедура переезда длится 2-4 недели, страницы, ТИЦ и т.д., все джолжно вернуться в течение нескольких недель, просто ждите полной склейки зеркал, новое https-зеркало должно стать главным, как оно станет главным, старый домен с http можно из веб-мастера удалить, это ни на что не повлияет.
Итоги
Итак, подведем итоги проделанной работы:
- SSL-сертификат установили и проверили внешними сервисами;
- 301-редиректы с http на https включили;
- Зеркало и карту сайта в robots.txt на https переключили;
- Карту сайта sitemap.xml на https переключили и пересоздали;
- Канонические URL-ы в инфоблокках обновили;
- В Яндекс.Вебмастер - Переезд сайта сделали.
Считаю наше очень большое дело завершенным!
#UPD 18/08/2017
Cгенерировать CSR запрос в Vesta
Также можно в панели Vesta в настройках домена по ссылке сгенерировать тот самый запрос.
Перейдя по ней увидим такую форму заполненную демо-данными.
Поддержка Lets Encrypt в Vesta
Еще обратите внимание, тут же в настройках домена есть возможность создать бесплатный сертификат на 90 дней = 3 месяца.
Просто ставите галку и нажимаете внизу кнопку Сохранить, Vesta автоматически добавит такой сертификат и он будет работать, возможно вам пригодится такой сертификат также для тестирования чего-то, какой-то интеграции с каким-нибудь сервисом, это гораздо удобней создания самоподписанного сертификата вручную, тут все в два клика, но для бизнеса и серьезных сайтов такие сертификаты я конечно использовать не советую.
SSL-сертификат от 1cloud.ru
Пока корректировал статью нашел очень полезный сайт по SSL-сертификатам 1cloud.ru
Все очень грамотно и не навязчиво раписано, что, кому и зачем, по каждому типу сертификата и на понятном нам Русском языке, здесь вы точно разберетесь в каждом сертификате и легко подтвердите его владение, аналогичная, но очень информативная форма заказа и подтверждения домена, и цены почти такие же.
А также очень наглядно оформили статью про «Зелёные замочки» в разных браузерах
Скрипты из непроверенных источников после перехода на https
После открытия сайта по https могут возникнуть некоторые проблемы, может даже весь сайт разлетаться по кусочкам, вроде как все сломалось, но обратите внимание, например в Хроме, в адресной строке справа будет вот такой значок и сообщение, это так называемое смешанное содержимое
Оно означает, что часть скриптов или стилей, а также картинки, шрифты, счетчики посещаемости, в шаблоне вашего сайта подгружается с удаленных сайтов по http-протоколу, а вы просматриваете сайт по https-протоколу, в данном случает браузеры блокируют такие скрипты и сайт может даже ломаться, нужно обязательно перевести все такие скрипты, стили, пути к картинкам и т.д. либо с абсолютных на относительные адреса, либо на https-протокол, иначе у каждого посетителя так будет блокироваться часть контента.
Как раз, вот про это я имел ввиду, ищу проблемы не лету и пишу статью.
Как видите, в самих банках не особо заботятся о своих сайтах, а вы в курсе, что вот из-за таких внешне подключенных скриптов заражаются ваши сайты и даже взламываются, если взломают тот внешний сайт, можно подменить содержимое этого внешнего скрипта и выполнить практически любой код на вашем сайте, даже закачать файлы и получить доступ к вашему ресурсу, но скорее всего навешается пачка скрытых ссылок и редиректы, выжмут максимум пользы и посещалки с вашего сайта, а также вес страниц и годами потраченные сотни тысяч рублей на его продвижение, в худшем случае будут воровать куки посетителей и персональные данные, а там столько всего интересного.
Рекомендую вам как можно скорее открыть исходный код страниц своего сайта и проверить на внешние скрипты, стили, вообще максимально все локально должно подключаться, за исключением счетчиков, т.е. ссылки ко всем скриптам, стилям, изображениям, шрифтам и т.д. должны быть относительные, например: /bitrix/templates/... <br>
А если сайт заражен, то в исходном коде скорее всего ничего не найдется, но можно легко обнаружить все внешние скрипты в инструментах разработчика браузера по F12 на вкладке Network с сортировкой по домену
Здесь все внешние домены увидите, даже тех скриптов, которые добавляются на страницу динамически в JS при/после загрузки страницы с помощью, например такого кодаdocument.write('<script src="http://example.com/"></script>');
После перехода на https-протокол такую проверку на внешние ресурсы по http нужно делать обязательно.
#UPD 19/08/2017
Яндекс.Вебмастер вебинар "Переезжаем на https"
Нашел очень полезное видео вебинара в блоге Яндекса для вебмастеров
Думаю, в нем вы найдете ответы на все свои вопросы в плане переезда на https, очень информативный вебинар и грамотный специалист.
Автор: Александр Смирнов
Поисковая оптимизация сайта переезжаем на https
Qualys SSL Server Test
Я посмотрел вебинар и решил проверить SSL-сертификат этим сервисом SSL Server Test на своем сайте и сайты клиентов, и вот с чем я столкнулся.
На моем сайте, если я правильно сервис понял, все отлично, суммарная оценка отличная.
А вот у клиента несколько сайтов на сервере и у всех такая ужасная оценка оказалась, у всех одинаково.
Я так понял, данный сервис проверяет сертификат, шифрование на сервере и другие параметры самого сервера, не только сертификат.
Читая дальше репорт увидим, на что он ругается, мне уже некогда было подробно разбираться в этом, короче какая-то проблема в безопасности шифрования на сервере, конкретно с RC4_128_SHA + SSL3 INSECURE
Конфигурация сервера клиента Apache 2.2. + Nginx 1.6
, у моего сервера php-fpm + nginx 1.12
Недолго гуглив проблему я вышел на след обновления libssl, openssl, nginx
на сервере, что и сделал такой командой, у меня Debian 7
apt-get install --only-upgrade libssl1.0.0 openssl service nginx upgrade
После обновления ситуация изменилась и стала лучше, но все равно эта ошибка This server uses RC4 with modern protocols. Grade capped to C. сохранялась.
Перейдя по ссылке напротив ошибки я нашел вот эту статью, я так понял, что в Apache 2.2 данную проблему не решить, нужен Apache 2.4
Configuring Apache, Nginx, and OpenSSL for Forward Secrecy
Apache
Проблема кроется в SSLProtocol и SSLCipherSuite
, это есть в настройках модуля SSL для Apache2, который мы с вами ранее включали, но не настраивали.
Конфиги SSL-модуля в Debian 7 здесь /etc/apache2/mods-available/ssl.conf
, добавил строки в конце файла.
<IfModule mod_ssl.c> # # Тут базовые конфиги # SSLProtocol all -SSLv2 -SSLv3 SSLHonorCipherOrder on SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS" </IfModule>
Nginx
Т.к. статику на нашем сервере отдает nginx
, надеюсь это должно помочь, открываем его главный конфиг
/etc/nginx/nginx.conf
И видим здесь тоже есть аналогичные настройки по умолчанию, в разделе http{...}
# SSL PCI Compliance ssl_ciphers RC4:HIGH:!aNULL:!MD5:!kEDH; ssl_session_cache shared:SSL:10m; ssl_prefer_server_ciphers on;
Заменяем их вот на эти, ну или старые комментируем знаком #, новые ниже добавляем.
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers "ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS";
Наглядно у нас получится вот так
Перезапускаем apache2
и nginx
после внесения изменений в конфиги
service apache2 restart service nginx restart
Заново проверяем сайт и видим, теперь все отлично!
Не знаю, что это, может тот самый рейтинг сертификата, думаю проблема решена!
В той статье есть еще два пункта Настройка OpenSSL (с RC4) и Настройка OpenSSL (без RC4) возможно это вам будет полезно, если что, сообщите, нужно ли мне это сделать))