Как установить SSL-сертификат

В статье приведена инструкция как установить 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-сертификат

В зависимости от используемого хостинга или сервера часть шагов может отличаться или отсутствовать, но в целом классический процесс получения и установки сертификата сводится к следующим шагам:

  1. приобрести SSL-сертификат;
  2. сгенерировать CSR запрос на сертификат;
  3. выпустить SSL-сертификат;
  4. установить SSL-сертификат на хостинг или сервер;
  5. внести изменения в настройки сайта.

Приобретение SSL-сертификата

Итак, вы знаете, что такое SSL и определились в выборе сертификата, далее его нужно приобрести.

Купить SSL-сертификат можно напрямую у одного из удостоверяющих центров, например Comodo, Thawte, GeoTrust. Однако проще всего это сделать у вашего хостинг-провайдера, где располагается домен, сервер, сайт.

Рекомендую хостинги:

  • REG.RU (промокод на скидку для заказа домена или хостинга: 2229-CC0A-AC4D-C31B)
  • Hostland (месяц бесплатно)

Бесплатная пробная версия сертификата SSL от Comodo

На этапе покупки укажите тип сертификата и домен для которого он приобретается. Затем оплатите сертификат.

В зависимости от поставщика сертификата до или после оплаты нужно будет сгенерировать CSR запрос на сертификат. В некоторых случаях данная процедура, может быть включена в процесс покупки.

Генерация CSR запроса на сертификат

CSR (Certificate Signing Request) – это зашифрованный запрос на получение сертификата, включает в себя информацию о домене и организации.

CSR может быть сгенерирован одним из способов:

  1. Автоматически в процессе заказа SSL-сертификата.
  2. Онлайн, через CSR генератор, например у REG.RU или Comodo.
  3. Самостоятельно на собственном веб-сервере.

В независимости от способа, в результате вы должны получить 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.

Сохраните копию закрытого ключа на своем компьютере. При компрометации ключа или утрате пароля сертификат придется перевыпустить.

Далее сгенерируйте CSR запрос.

openssl req -new -key private.key -out domain.csr -sha256

В команде выше:

  • 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 запрос на выпуск сертификата, например, как в примере на скриншоте ниже.

SSL Setup

После отправки запроса подтвердите владение доменом. Может быть доступно от одного до четырех способов подтверждения:

  1. Подтверждение через электронную почту;
  2. Подтверждение через CNAME-запись (Comodo);
  3. Подтверждение через TXT-запись (GeoTrust, Thawte);
  4. Подтверждение через HTTP (Comodo, GeoTrust).
Domain Validation

Подтверждение через электронную почту

Понадобится один из почтовых ящиков 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.

Например:

_09f7e02f1290be211da707a266f153b3.subdomain1.yourdomain.com. CNAME 3d874ab7b199418a9753111648448163.9eb1f2608f4da5aa3560154ca1b0df53.comodoca.com.

Хеш SHA-256 разделен символом «.» (точка) на две метки, каждая длиной 32 символа;
в конце доменного имени необходимо поставить точку.

Подтверждение через TXT-запись

Вам будет предоставлено хеш-значение, которое нужно добавить в TXT-запись подтверждаемого домена.

Подтверждение через HTTP

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

Путь файла:

http://<ваш домен>/.well-known/pki-validation/<Значение хеша MD5 в верхнем регистре>.txt

Содержимое:

<Значение хеша SHA-256>
comodoca.com

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

Download SSL

В скачанном архиве или письме будет несколько файлов: SSL-сертификат, один или несколько промежуточных и один корневой.

Например, для сертификатов Comodo:

  • domain_ru.crt — SSL-сертификат;
  • AddTrustExternalCARoot.crt (или AAACertificateServices.crt) — корневой;
  • SectigoRSADomainValidationSecureServerCA.crt, USERTrustRSAAddTrustCA, USERTrustRSAAAACA.crt- промежуточные.

Часто цепочка сертификатов может поставляться в виде одного файла – .CA-BUNDLE.

Установка SSL-сертификата

Дальнейшие шаги зависят от того, где размещается ваш сайт, на хостинге или собственном сервере и какое окружение на нем используется.

Как установить SSL-сертификат на хостинг

Найдите раздел SSL панели управления хостингом.

Если сертификат куплен у того же хостинг-провайдера где размещен ваш сайт, скорее всего нужно будет лишь связать сертификат с доменом (хостингом), например как на скриншоте ниже для хостинг-провайдера REG.RU.

REG.RU SSL Hosting

Если сертификат приобретался в другом месте, вручную загрузите файлы сертификата, файл приватного ключа и укажите домен (хостинг).

REG.RU SSL Upload

Аналогичным образом процедура выглядит для других хостеров. На скриншоте ниже скриншот с примером для Hostland.

Hostalnd SSL Upload

Подробные инструкции можно найти у своего хостинг провайдера.

Как установить SSL-сертификат в панели управления ISPmanager

Войдите в панель управления ISPmanager.

Перейдите в раздел «SSL-сертификаты» и нажмите «Создать».

Укажите тип сертификата «Существующий» и нажмите «Далее».

На открывшейся странице заполните поля:

  • Имя SSL-сертификата – любое имя латиницей, под ним сертификат будет отображаться в панели управления;
  • SSL-сертификат – содержимое файла SSL-сертификата;
  • Ключ SSL-сертификата – приватный ключ сертификата;
  • Цепочка SSL-сертификатов – последовательно укажите сначала корневой сертификат, а затем с новой строки без пробела – промежуточный.

Затем нажмите Завершить.

В разделе «SSL-сертификаты» появится добавленный сертификат.

Далее сертификат следует подключить к домену, для этого перейдите в раздел «WWW-домены», дважды кликните по домену, для которого добавляется сертификат, поставьте галочку напротив Защищенное соединение (SSL) и нажмите «Ок». Здесь же можно включить редирект с HTTP на HTTPS.

Как установить SSL-сертификат на сервер с Nginx

Объедините три сертификата (SSL-сертификат, корневой и промежуточный) в один файл. Для этого с помощью блокнота или другого редактора создайте текстовый документ с именем domain.crt и поочередно поместите в него содержимое каждого из сертификатов (без лишних пробелов и пустых строк).

-----BEGIN CERTIFICATE-----
#SSL-сертификат#
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
#Корневой сертификат#
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
#Промежуточный сертификат (один или несколько)#
-----END CERTIFICATE-----

Так же понадобится приватный ключ, который был получен на этапе генерации CSR запроса на сертификат. Переименуйте его в domain.key.

Оба файла загрузите на сервер в директорию /etc/ssl/ или /etc/nginx/ssl/

Отредактируйте виртуальный хост сайта, для которого устанавливается сертификат. Файл /etc/nginx/sites-available/site.conf или или другой, в зависимости от особенностей сервера.

server {
	listen 443 ssl;

	server_name domain.com;
	ssl_certificate /etc/ssl/domain.crt;
	ssl_certificate_key /etc/ssl/domain.key;
}

Указаных настроек должно быть достаточно, чтобы SSL заработал.

Дополнительно можно внести еще несколько настроек для работы HTTPS. Оптимизация и безопасность Nginx тема отдельной статьи, поэтому используйте их на свое усмотрение или ограничьтесь конфигурацией выше.

server {
	listen 443 ssl;

	listen 80;
	server_name your_domain.com;
	ssl_certificate /etc/ssl/your_domain.crt;
	ssl_certificate_key /etc/ssl/your_domain.key;

	ssl_session_cache shared:SSL:10m;
	ssl_session_timeout 10m;
	keepalive_timeout 70;
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
	ssl_prefer_server_ciphers on;
	ssl_stapling on;
	ssl_trusted_certificate /etc/ssl/ca.crt;
	resolver 8.8.8.8;
}

Где:

  • /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С-Битрикс:

Настройка HTTPS-соединения

Инструкция для BitrixVM ниже версии 7.2.0

Инструкция для BitrixVM выше версии 7.2.0

Генератор конфигурационных файлов SSL

У Mozilla есть инструмент SSL Configuration Generator, он позволяет генерировать конфигурационные файлы для подключения SSL под большинство популярных серверов. Можно взять за основу рекомендуемые настройки или сверить текущим конфиг.

Внесение изменений в настройки сайта

Как настроить HTTPS для WordPress

HTTPS для WordPress посвящена отдельная заметка.

Настроить 301 редирект с http на https

Чтобы страницы ресурса вместо незащищенного протокола 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.

С помощью инструмента SSL Configuration Generator сравните конфигурацию сервера с рекомендуемой.

Просканируйте сайт на уязвимости в безопасности с помощью сервиса Mozilla Observatory и в случае замечаний исправьте их.

Полезные ссылки

SSL на Wikipedia
HTTPS на Wikipedia
SSL-сертификаты (сборник инструкций от REG.RU)
Генерация CSR для Apache (инструкция Comodo)
Защитите свой сайт с помощью HTTPS (инструкция от Google)
Online CSR Generator от Comodo

На этом всё. Но вы можете помочь проекту. Даже небольшая сумма поможет нам писать больше полезных статей.

Если статья помогла или понравилась, пожалуйста поделитесь ей в соцсетях.