Как установить 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

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

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