В статье приведена инструкция как установить SSL-сертификат (на хостинг или сервер) и перевести сайт на защищенный протокол HTTPS.
Что такое SSL-сертификат и зачем он нужен
Протокол HTTPS (HTTP Over TLS) нужен для безопасного обмена информацией. При его использовании, данные между пользователем и интернет-ресурсом передаются в зашифрованном виде, защищены от перехвата и модификации. Так же проверятся, что ресурс, с которым осуществляется взаимодействие действительно тот, за который себя выдает. Это важно для персональных данных, паролей, переписки и совершения платежей. Однако даже, если сайт собирает минимальную информацию о пользователях, например ФИО и email, он уже становится оператором персональных данных и по закону обязан соблюдать меры по защите информации, установка SSL-сертификата – одна из них.
SSL-сертификат – это цифровая подпись интернет-ресурса. Он необходим, чтобы протокол HTTPS заработал.
У сайтов защищенных SSL-сертификатом в URL в начале адреса вместо http будет указано https («s» значит secure – защищенный). Пользователь такого сайта, будет видеть характерный «замочек» рядом со строкой браузера, что означает безопасную передачу данных. Кликнув на «замочек», пользователь увидит доменное имя, на которое выпущен сертификат, срок действия, информацию о компании выпустившей сертификат, организацию-владельца (для сертификатов уровня «бизнес») и местонахождение.
Кроме защиты данных, сертификат полезен для SEO-продвижения сайта. С 2017 года поисковики (Google, Яндекс и др.) выше ранжируют сайты, которые работают через безопасное соединение, а сайты без HTTPS помечают как небезопасные.
Таким образом, наличие SSL-сертификата (в совокупности с грамотной настройкой сервера) гарантирует:
конфиденциальность, целостность и аутентификацию, что делает обмен информацией безопасным;
подлинность ресурса, что повышает уровень доверия посетителей и поисковиков.
Типы SSL-сертификатов
Существует несколько типов SSL-сертификатов.
Сертификат с проверкой домена (Domain Validation), например, DomainSSL или AlphaSSL. Самый простой и дешевый тип SSL-сертификатов. Подтверждает только домен. Не содержит информации о владельце, поэтому не предназначен для оказания коммерческих услуг на сайте. Физические лица могут использовать только этот тип сертификатов, но он доступен и для юридических лиц.
Сертификат с проверкой домена и организации (Organization Validation), например, OrganizationSSL. Подтверждает не только домен, но и его принадлежность компании. Центр авторизации проверит ее существование, а пользователь сможет увидеть ее название на сайте в информации о сертификате, кликнув на «замок» рядом с адресной строкой браузера. Используются, например для интернет-магазинов. Такие сертификаты могут быть зарегистрированы только юридическими лицами и ИП. При этом важно, чтобы и доменное имя было зарегистрировано на организацию, а не на физическое лицо.
Сертификат с расширенной проверкой организации (Extended Validation) – например, ExtendedSSL. Считается самым надёжным и предназначен для крупных организаций. При его оформлении центр сертификации проведет расширенную проверку налоговой и коммерческой деятельности компании. Выпуск сертификата займет продолжительное время (от 5 дней до нескольких недель) в том числе, в зависимости от скорости предоставления необходимых документов центру сертификации.
Еще один термин, который встретится при выборе сертификата – WildCard. Он означает поддержку поддоменов. Один SSL-сертификат с WildCard сможет работать и на основном домене, и на поддоменах без ограничений на их количество.
При заказе сертификатов Extended Validation или Organization Validation, центр сертификации может запросить следующие виды документов:
Свидетельство ИНН / КПП;
Свидетельство ОГРН;
Приказ о назначении директора;
Свидетельство о регистрации доменного имени;
Устав организации (первые 3 и последние 3 страницы);
Счета на оплату телефонных разговоров с номера компании за последние 3 месяца, с обязательным указанием в счетах названия и номера телефона организации и названия организации-поставщика услуг.
Документы нужно будет отправить по факсу или электронной почте. Заверять скан-копии не требуется. Центр сертификации может запросить и другие документы, не указанные в списке. Кроме того, с вами могут связаться по телефону для подтверждения телефонного номера организации и заказа сертификата.
Что нужно сделать чтобы установить SSL-сертификат
В зависимости от используемого хостинга или сервера часть шагов может отличаться или отсутствовать, но в целом классический процесс получения и установки сертификата сводится к следующим шагам:
приобрести SSL-сертификат;
сгенерировать CSR запрос на сертификат;
выпустить SSL-сертификат;
установить SSL-сертификат на хостинг или сервер;
внести изменения в настройки сайта.
Приобретение SSL-сертификата
Итак, вы знаете, что такое SSL и определились в выборе сертификата, далее его нужно приобрести.
Купить SSL-сертификат можно напрямую у одного из удостоверяющих центров, например Comodo, Thawte, GeoTrust. Однако проще всего это сделать у вашего хостинг-провайдера, где располагается домен, сервер, сайт.
Рекомендую хостинги:
REG.RU (промокод на скидку для заказа домена или хостинга: 2229-CC0A-AC4D-C31B)
На этапе покупки укажите тип сертификата и домен для которого он приобретается. Затем оплатите сертификат.
В зависимости от поставщика сертификата до или после оплаты нужно будет сгенерировать CSR запрос на сертификат. В некоторых случаях данная процедура, может быть включена в процесс покупки.
Генерация CSR запроса на сертификат
CSR (Certificate Signing Request) – это зашифрованный запрос на получение сертификата, включает в себя информацию о домене и организации.
CSR может быть сгенерирован одним из способов:
Автоматически в процессе заказа SSL-сертификата.
Онлайн, через CSR генератор, например у REG.RU или Comodo.
Самостоятельно на собственном веб-сервере.
В независимости от способа, в результате вы должны получить 2 файла (или их текстовое содержание) — файл запроса (domain.csr) и файл приватного ключа (private.key). Файл запроса потребуется для генерации сертификата. А приватный ключ понадобится в дальнейшем, его вместе с сертификатом нужно будет установить на хостинг или сервер.
Первые два способа не должны вызвать трудностей, генерация на собственном сервере описана ниже, но для начала несколько важных замечаний:
Все данные запроса должны заполняться на английском языке.
При заказе сертификатов типа WildCard доменное имя необходимо указывать со знаком звездочка (Пример: *.domain.com).
У домена, для которого заказывается SSL-сертификат (за исключением зон .ru и .рф), должно быть отключено сокрытие персональных данных.
В некоторых случаях, для того, чтобы сертификат защищал домены с префиксом www и без него, необходимо указать домен с префиксом, например: www.domain.ru. В противном случае сертификат не будет защищать домен с www даже если он поддерживает его.
Далее при генерации запроса CSR вам потребуется указать адрес электронной почты. Рекомендуется заранее создать почтовый ящик вида admin@domain, administrator@domain, hostmaster@domain, postmaster@domain или webmaster@domain и указать в контактных данных его. Этот же адрес пригодится позже для подтверждения владения доменом.
Генерация CSR запроса на собственном сервере
Потребуется криптографический пакет с открытым исходным кодом – OpenSSL. Он входит в состав большинства UNIX-подобных операционных систем.
Во многих инструкциях рекомендуется генерировать закрытый ключ и CSR запрос на том же сервере, для которого выпускается сертификат. Однако, на самом деле, это не обязательно должен быть один и тот же сервер.
Подключитесь к серверу по SSH и перейдите в домашнюю директорию.
cd ~
Сгенерируйте закрытый ключ.
openssl genrsa -out private.key 4096
В команде выше:
private.key – выходной файл, который будет содержать ключ;
4096 – размер ключа, резже 2048.
На запрос «Enter pass phrase for private.key» укажите пароль для защиты закрытого ключа, а затем «Verifying – Enter pass phrase for private.key» – подтвердите его, повторив ввод пароля еще раз.
Закрытый ключ будет создан и сохранен в файл под именем private.key.
Сохраните копию закрытого ключа на своем компьютере. При компрометации ключа или утрате пароля сертификат придется перевыпустить.
private.key – созданный на предыдущем этапе закрытый ключ;
domaine.csr – выходной файл с CSR запросом.
На запрос «Enter pass phrase for private.key» введите пароль от закрытого ключа.
Далее последовательно латинскими символами укажите следующие данные:
Country Name – двухсимвольный код страны согласно ISO-3166, например RU для России;
State or Province Name: область или регион без сокращений;
Locality Name: название города или населенного пункта;
Organization Name: название организации, для физ. лиц укажите «Private Person»;
Organizational Unit Name: подразделение (необязательно), для которого заказывается сертификат, например для IT-отдела можно указать IT;
Common Name: доменное имя (полностью) для которого заказывается сертификат;
Email Address: контактный e-mail адрес, вида admin@domain, administrator@domain, hostmaster@domain, postmaster@domain или webmaster@domain;
A challenge password: не заполняется;
An optional company name: альтернативное имя компании (необязательно).
CSR запрос на сертификат будет сохранен в файле domain.csr в виде закодированного текста.
Проверить корректность введенных данных можно, выполнив следующую команду.
openssl req -noout -text -in domain.csr
Файлы закрытого ключа и CSR запроса или их содержимое потребуются далее. Вывести (чтобы затем скопировать) содержимое файла можно командой cat.
less private.key
или
less domain.csr
Для выхода нажмите клавишу Q.
Выпуск SSL-сертификата
Теперь, когда есть запрос, на основании него можно выпустить сертификат.
В зависимости от того, где приобретался сертификат, либо в личном кабинете хостинга или удостоверяющего центра, либо по ссылке из письма подтверждающего покупку, станет доступна страница, на которой нужно ввести ранее сгенерированный CSR запрос на выпуск сертификата, например, как в примере на скриншоте ниже.
После отправки запроса подтвердите владение доменом. Может быть доступно от одного до четырех способов подтверждения:
Подтверждение через электронную почту;
Подтверждение через CNAME-запись (Comodo);
Подтверждение через TXT-запись (GeoTrust, Thawte);
Подтверждение через HTTP (Comodo, GeoTrust).
Подтверждение через электронную почту
Понадобится один из почтовых ящиков admin@domain, administrator@domain, hostmaster@domain, postmaster@domain или webmaster@domain. На него придет электронное письмо либо с уникальной ссылкой, либо с кодом, который нужно ввести для подтверждения управления доменом. Если следовали рекомендациям выше, то скорее всего такой ящик у вас уже есть.
Подтверждение через CNAME-запись
Вам будут предоставлены хеш-значения, которые необходимо ввести в DNS CNAME запись подтверждаемого домена.
Формат CNAME следующий:
_<value of MD5 hash of CSR>.<ваш домен>. CNAME <value of SHA-256 hash of CSR>.[<uniqueValue>.]comodoca.com.
Часто цепочка сертификатов может поставляться в виде одного файла – .CA-BUNDLE.
Установка SSL-сертификата
Дальнейшие шаги зависят от того, где размещается ваш сайт, на хостинге или собственном сервере и какое окружение на нем используется.
Как установить SSL-сертификат на хостинг
Найдите раздел SSL панели управления хостингом.
Если сертификат куплен у того же хостинг-провайдера где размещен ваш сайт, скорее всего нужно будет лишь связать сертификат с доменом (хостингом), например как на скриншоте ниже для хостинг-провайдера REG.RU.
Если сертификат приобретался в другом месте, вручную загрузите файлы сертификата, файл приватного ключа и укажите домен (хостинг).
Аналогичным образом процедура выглядит для других хостеров. На скриншоте ниже скриншот с примером для Hostland.
Подробные инструкции можно найти у своего хостинг провайдера.
Как установить SSL-сертификат в панели управления ISPmanager
Войдите в панель управления ISPmanager.
Перейдите в раздел «SSL-сертификаты» и нажмите «Создать».
Укажите тип сертификата «Существующий» и нажмите «Далее».
На открывшейся странице заполните поля:
Имя SSL-сертификата – любое имя латиницей, под ним сертификат будет отображаться в панели управления;
Цепочка SSL-сертификатов – последовательно укажите сначала корневой сертификат, а затем с новой строки без пробела – промежуточный.
Затем нажмите Завершить.
В разделе «SSL-сертификаты» появится добавленный сертификат.
Далее сертификат следует подключить к домену, для этого перейдите в раздел «WWW-домены», дважды кликните по домену, для которого добавляется сертификат, поставьте галочку напротив Защищенное соединение (SSL) и нажмите «Ок». Здесь же можно включить редирект с HTTP на HTTPS.
Как установить SSL-сертификат на сервер с Nginx
Объедините три сертификата (SSL-сертификат, корневой и промежуточный) в один файл. Для этого с помощью блокнота или другого редактора создайте текстовый документ с именем domain.crt и поочередно поместите в него содержимое каждого из сертификатов (без лишних пробелов и пустых строк).
Так же понадобится приватный ключ, который был получен на этапе генерации CSR запроса на сертификат. Переименуйте его в domain.key.
Оба файла загрузите на сервер в директорию /etc/ssl/ или /etc/nginx/ssl/
Отредактируйте виртуальный хост сайта, для которого устанавливается сертификат. Файл /etc/nginx/sites-available/site.conf или или другой, в зависимости от особенностей сервера.
Указаных настроек должно быть достаточно, чтобы SSL заработал.
Дополнительно можно внести еще несколько настроек для работы HTTPS. Оптимизация и безопасность Nginx тема отдельной статьи, поэтому используйте их на свое усмотрение или ограничьтесь конфигурацией выше.
/etc/ssl/ca.crt – путь до файла с корневым сертификатом (его предварительно нужно загрузить на сервер);
8.8.8.8 – DNS-сервер.
Затем убедитесь, что конфигурационный файл Nginx не содержит ошибок.
nginx -t
Чтобы изменения вступили в силу, перезагрузите сервер Nginx.
Ubuntu
sudo /etc/init.d/nginx restart
CentOS 6
service nginx restart
CentOS 7
systemctl restart nginx.service
Как установить SSL-сертификат на сервер с Apache
Понадобится файл SSL-сертификата, назовите его domain.crt и приватный ключ, который был получен на этапе генерации CSR запроса на сертификат, переименуйте его в domain.key.
Так же, создайте текстовый документ, например с именем chain.crt и поместите в него цепочку сертификатов — поочередно добавьте в него содержимое промежуточного сертификата и следом за ним корневого (без лишних пробелов и пустых строк).
Все 3 файла загрузите на сервер в директорию /etc/ssl/
Откройте конфигурационный файл Apache сайта, для которого устанавливается сертификат. Если сайт один, конфигурационный файл скорее всего будет одним из указанных ниже:
для CentOS: /etc/httpd/conf/httpd.conf;
для Fedora/CentOS/RHEL: /etc/apache2/apache2.conf;
для OpenServer конфиг в корневой папке.
Убедиться, что открытый файл действительно является конфигурацией сайта можно, найдя в нем строку ServerName. Ее значение должно соответствовать домену, для которого устанавливается SSL-сертификат (напр. domain.ru).
В конце файла создайте копию секции «VirtualHost». Измените в ней порт на 443 и добавьте следующие строки.
SSLEngine on
SSLCertificateFile /etc/ssl/domain_name.crt
SSLCertificateKeyFile /etc/ssl/private.key
SSLCertificateChainFile /etc/ssl/chain.crt
Затем убедитесь, что конфигурационный файл Apache не содержит ошибок.
apachectl configtest
Чтобы изменения вступили в силу, перезагрузите Apache.
Centos
/etc/init.d/httpd restart
Debian или Ubuntu
/etc/init.d/apache2 restart
Как установить SSL-сертификат на 1C-Bitrix
Воспользуйтесь официальными инструкциями от 1С-Битрикс:
У Mozilla есть инструмент SSL Configuration Generator, он позволяет генерировать конфигурационные файлы для подключения SSL под большинство популярных серверов. Можно взять за основу рекомендуемые настройки или сверить текущим конфиг.
Чтобы страницы ресурса вместо незащищенного протокола HTTP стали открываться по HTTPS со свежеустановленным SSL-сертификатом, нужно настроить редирект.
Если в качестве web-сервера используется Apache, внесите изменения в файл .htaccess:
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
если вариант выше не сработал:
RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
или (если возникает циклическая переадресация):
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
и последний вариант:
RewriteEngine On
RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Теперь сайт будет работать по протоколу HTTPS.
Оповестить поисковые системы об изменениях
В файле robots.txt поправьте ссылку на карту сайта (Sitemap), вместо http укажите https.
Чтобы не потерять позиции в поисковых выдачах нужно сообщить Яндекс и Google о том, что теперь ресурс работает по протоколу HTTPS. Для этого добавьте HTTPS-версию сайта в Яндекс Вебмастер и Google Search Console. При этом старый сайт из панели вебмастера удалять не рекомендуется, пока индекс качества сайта не «переедет» на новый сайт. В Яндекс Вебмастер рекомендуется оставить его не менее чем на год. В Google Search Console сайт лучше не удалять совсем.
Переезд может занять от недели до месяца. Затем нужно убедиться, что с поисковой выдачи в ссылках на ваш сайт содержится https вместо http. Если это так, то переезд произошел успешно.
Что еще нужно сделать
На страницах сайта могут присутствовать внутренние ссылки сайта с абсолютными URL адресами с HTTP (в контенте, в меню и т.п.), которые нуждаются в корректировке, измените их на относительные, чтобы они вели на URL с HTTPS.
Убедитесь, что ресурс не не открывается по HTTP, вместо этого происходит редирект на HTTPS. Доступность ресурса одновременно по HTTP и HTTPS является потенциальной уязвимостью.
Проверьте корректность установки SSL-сертификата помощью сервиса sslshopper.com. Если у вас кириллический домен, предварительно скорректируйте его имя в формат Punycode.