Введение
Этот учебник покажет вам, как получить и установить SSL-сертификат от надежного коммерческого Центра сертификации (CA). SSL-сертификаты позволяют веб-серверам шифровать свой трафик и также предлагают механизм проверки подлинности серверов перед их посетителями. Веб-сайты, использующие SSL, доступны через протокол https://
.
До середины 2010-х годов многие меньшие веб-сайты не всегда использовали SSL или HTTPS. С тех пор ожидания в области безопасности увеличились, и был создан проект Let’s Encrypt, чтобы предоставить бесплатные, надежные SSL-сертификаты в масштабах, позволяя практически всем использовать HTTPS при необходимости.
Однако у сертификатов Let’s Encrypt есть некоторые ограничения. Они истекают каждые 3 месяца, обычно требуя наличия работающего скрипта автоматического обновления, и могут быть неудобны в использовании в средах, где это невозможно. Кроме того, Let’s Encrypt не предоставляет сертификатов с расширенной проверкой, которые подтверждают юридическое владение вашим веб-присутствием, или сертификатов Wildcard, которые автоматически соответствуют каждому возможному поддомену вашего веб-сайта (например, shop.example.com), без необходимости регистрировать каждый из них вручную.
Для большинства пользователей эти ограничения не будут иметь существенного значения. Let’s Encrypt – популярный вариант для многих личных и коммерческих веб-сайтов. Однако, если у вас есть особые требования к корпоративному программному обеспечению или очень крупная коммерческая деятельность, стоит рассмотреть приобретение сертификата у коммерческого центра сертификации.
Этот учебник рассматривает процесс выбора и развертывания SSL-сертификата от доверенного центра сертификации. После того как вы получите свой SSL-сертификат, этот учебник расскажет о его установке на веб-серверах Nginx и Apache.
Предварительные требования
Есть несколько предварительных требований перед попыткой получения SSL-сертификата у коммерческого центра сертификации:
-
Зарегистрированное доменное имя. В этом учебнике будет использоваться
example.com
. Вы можете приобрести доменное имя на Namecheap, получить его бесплатно на Freenom или использовать регистратор доменных имен по вашему выбору. -
Доступ к одному из адресов электронной почты в записи WHOIS вашего домена или к адресу электронной почты типа “администратор” на самом домене. Удостоверяющие центры, выдающие SSL-сертификаты, обычно подтверждают контроль над доменом, отправляя электронное письмо для проверки на один из адресов в записи WHOIS домена или на общий адрес администратора на самом домене. Для выдачи сертификата с расширенной проверкой необходимо также предоставить УЦ документы для подтверждения юридической личности владельца веб-сайта, среди прочего.
-
Настройка DNS-записей для вашего сервера. Если вы используете DigitalOcean, пожалуйста, ознакомьтесь с нашей документацией по DNS для получения подробной информации о том, как их добавить.
Этот учебник предоставит инструкции по настройке конфигурации для сервера Ubuntu 22.04, созданного в соответствии с учебником настройки сервера Ubuntu 22.04, включая пользователя с sudo-правами, не являющегося root, и брандмауэр. Большинство современных вариантов Linux будут работать аналогично.
Также у вас должен быть веб-сервер, такой как Nginx или Apache, установленный в соответствии с инструкциями из Как установить Nginx на Ubuntu 22.04 или Как установить веб-сервер Apache на Ubuntu 22.04. Убедитесь, что у вас есть блок сервера (или виртуальный хост Apache) для вашего домена.
Шаг 1 – Выбор вашего удостоверяющего центра
Если вы не уверены, какого удостоверяющего центра использовать, есть несколько факторов, которые стоит учесть.
Членство в программе корневого сертификата
Самый важный момент заключается в том, что CA, который вы выбираете, является членом программ корневых сертификатов наиболее распространенных операционных систем и веб-браузеров, то есть это “доверенный” CA, и его корневой сертификат доверяется обычными браузерами и другим программным обеспечением. Если SSL-сертификат вашего веб-сайта подписан доверенным CA, его личность считается действительной программным обеспечением, которое доверяет CA.
Большинство коммерческих CA, с которыми вы столкнетесь, будут членами общих программ корневых CA, но не повредит проверить, прежде чем сделать покупку сертификата. Например, Apple публикует свой список доверенных корневых сертификатов SSL.
Типы сертификатов
Убедитесь, что вы выбираете CA, который предлагает тип сертификата, который вам нужен. Многие CA предлагают вариации этих типов сертификатов под различными названиями и ценовыми структурами. Вот краткое описание каждого типа:
- Одиночное доменное имя: Используется для одного домена, например,
example.com
. Обратите внимание, что дополнительные поддомены, такие какwww.example.com
, не включены - Общедоступный: Используется для домена и любых его поддоменов. Например, общедоступный сертификат для
*.example.com
также может быть использован дляwww.example.com
иstore.example.com
- Множественный домен: Известные как сертификаты SAN или UC, они могут использоваться с несколькими доменами и поддоменами, которые добавляются в поле Subject Alternative Name. Например, один много-доменный сертификат может быть использован с
example.com
,www.example.com
иexample.net
Помимо упомянутых типов сертификатов, существуют разные уровни проверки, которые предлагают ЦС:
- Проверка домена (DV): Сертификаты DV выдаются после того, как ЦС подтверждает, что заявитель владеет или контролирует соответствующий домен
- Проверка организации (OV): Сертификаты OV могут быть выданы только после того, как выдающий ЦС подтвердит юридическую принадлежность заявителя
- Расширенная проверка (EV): Сертификаты EV могут быть выданы только после того, как выдающий ЦС подтвердит юридическую принадлежность, среди прочего, заявителя в соответствии с жестким набором правил. Целью этого типа сертификата является обеспечение дополнительной уверенности в легитимности идентичности вашей организации для посетителей вашего сайта. Сертификаты EV могут быть одиночными или множественными доменами, но не подстановочными
Дополнительные функции
Многие УЦ предлагают широкий спектр «бонусных» функций, чтобы отличить себя от остальных поставщиков SSL-сертификатов. Некоторые из этих функций могут помочь вам сэкономить деньги, поэтому важно взвесить ваши потребности по отношению к предложениям перед покупкой. Примеры функций, на которые стоит обратить внимание, включают бесплатное переиздание сертификата или сертификат по цене одного домена, который работает для www.
и базового имени домена, например, www.example.com
с SAN example.com
Шаг 2 – Генерация CSR и закрытого ключа
После того, как вы определите свои предпосылки и узнаете тип необходимого сертификата, пришло время сгенерировать запрос на подпись сертификата (CSR) и закрытый ключ.
Если вы планируете использовать Apache HTTP или Nginx в качестве веб-сервера, вы можете использовать команду openssl
для генерации закрытого ключа и CSR на своем веб-сервере. В этом руководстве все соответствующие файлы можно хранить в домашнем каталоге, но не стесняйтесь хранить их в любом безопасном месте на вашем сервере:
Для генерации закрытого ключа с именем example.com.key
и CSR с именем example.com.csr
выполните эту команду (замените example.com
на имя вашего домена):
- openssl req -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr
В этом моменте вам будет предложено ввести несколько строк информации, которые будут включены в ваш запрос на сертификат. Самая важная часть – это поле Общее имя
, которое должно соответствовать имени, которое вы хотите использовать с вашим сертификатом – например, example.com
, www.example.com
, или (для запроса wildcard-сертификата) *.example.com
. Если вы планируете получить сертификат OV или EV, убедитесь, что все остальные поля точно отражают данные вашей организации или бизнеса. Указание “пароля для вызова” не требуется.
Например:
OutputCountry Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New York
Locality Name (eg, city) []:New York
Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:example.com
Email Address []:[email protected]
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Это сгенерирует файлы .key
и .csr
. Файл .key
– это ваш закрытый ключ и должен быть храниться в безопасности. Файл .csr
– это то, что вы отправите в Центр Сертификации для запроса SSL-сертификата.
- ls example.com*
Outputexample.com.csr example.com.key
Вам нужно будет скопировать и вставить ваш CSR при отправке запроса на сертификат вашему Центру Сертификации. Чтобы распечатать содержимое вашего CSR, используйте cat
:
cat example.com.csr
Теперь вы готовы к покупке сертификата у Центра Сертификации.
Шаг 3 – Покупка и Получение Сертификата
Есть много коммерческих поставщиков сертификатов центра сертификации, и вы можете сравнить и сопоставить наиболее подходящие варианты для своей собственной настройки. Например, Namecheap выступает в качестве перепродавца сертификатов SSL и в прошлом менял поставщиков центра сертификации, чтобы предоставить наилучшее соотношение цены и качества. В настоящее время они предлагают сертификаты от Comodo CA. Вот пример их предложений на декабрь 2022 года:
После выбора вам потребуется загрузить CSR, который вы сгенерировали на предыдущем этапе. Ваш поставщик сертификатов также, вероятно, предложит этап “Подтверждение”, который отправит запрос на подтверждение по электронной почте на адрес из записи WHOIS вашего домена или на адрес типа администратора домена, для которого вы получаете сертификат.
После утверждения сертификата он будет отправлен по электронной почте на указанного администратора. Скопируйте и сохраните его на своем сервере в том же месте, где вы сгенерировали свой закрытый ключ и CSR. Назовите сертификат именем домена и с расширением .crt
, например, example.com.crt
, а промежуточный сертификат – intermediate.crt
.
Теперь сертификат готов к установке на ваш веб-сервер, но сначала вам может потребоваться внести некоторые изменения в вашу брандмауэр.
Шаг 4 – Обновление вашей брандмауэра для разрешения HTTPS
Если у вас включен брандмауэр ufw
, как рекомендуется в нашем руководстве по настройке Ubuntu 22.04, вам нужно будет настроить параметры для разрешения трафика HTTPS. Nginx и Apache при установке регистрируют несколько профилей в ufw
.
Вы можете увидеть текущие настройки, набрав:
- sudo ufw status
Если вы получаете вывод, содержащий только Nginx HTTP
или Apache
, разрешен только трафик HTTP к веб-серверу:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
Для дополнительного разрешения трафика HTTPS разрешите профиль Nginx Full
или Apache
Full и удалите избыточное разрешение профиля HTTP:
- sudo ufw allow 'Nginx Full'
- sudo ufw delete allow 'Nginx HTTP'
Это должно привести к такому результату:
- sudo ufw status
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)
На последнем этапе вы установите сертификат.
Шаг 5 – Установка сертификата на ваш сервер
Получив сертификат от выбранного вами УЦ, вам нужно установить его на ваш веб-сервер. Для этого добавьте несколько строк, связанных с SSL, в конфигурацию программного обеспечения вашего веб-сервера.
Этот учебник рассмотрит настройку Nginx и Apache на Ubuntu 22.04, но большинство современных дистрибутивов Linux будут работать аналогично. В этом учебнике также делаются следующие предположения:
- Приватный ключ, SSL-сертификат и, при необходимости, промежуточные сертификаты УЦ находятся в домашнем каталоге по пути
/home/sammy
- Приватный ключ называется
example.com.key
- Сертификат SSL называется
example.com.crt
- Промежуточный сертификат(ы) CA, возвращенный вашим провайдером, находится в файле с именем
intermediate.crt
Примечание: В производственной среде эти файлы должны храниться где-то, где к ним имеет доступ только процесс веб-сервера (обычно root
), и закрытый ключ должен быть надежно защищен. Например, Let’s Encrypt хранит созданные им сертификаты в /etc/letsencrypt
. Примеры производства будут различаться из-за сложности многосерверной конфигурации.
Nginx
Это шаги для ручного развертывания SSL-сертификата на Nginx.
Если ваш CA вернул только промежуточный сертификат, вы должны создать единый файл “цепной” сертификат, который содержит ваш сертификат и промежуточные сертификаты CA.
Предполагая, что ваш файл сертификата называется example.com.crt
, вы можете использовать команду cat
для объединения файлов вместе и создания объединенного файла с именем example.com.chained.crt
:
- cat example.com.crt intermediate.crt > example.com.chained.crt
Используя nano
или ваш редактор текста по умолчанию, откройте файл блока сервера Nginx для редактирования:
- sudo nano /etc/nginx/sites-enabled/default
Найдите директиву listen
и измените ее на listen 443 ssl
:
…
server {
listen 443 ssl;
…
Далее найдите директиву server_name
в этом же блоке сервера и убедитесь, что ее значение совпадает с общим именем вашего сертификата. Кроме того, добавьте директивы ssl_certificate
и ssl_certificate_key
, чтобы указать пути к вашим файлам сертификата и закрытого ключа:
…
server_name example.com;
ssl_certificate /home/sammy/example.com.chained.crt;
ssl_certificate_key /home/sammy/example.com.key;
…
Чтобы разрешить только самые безопасные протоколы и шифры SSL, добавьте следующие строки в файл:
…
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
…
Наконец, чтобы перенаправлять запросы HTTP на HTTPS по умолчанию, вы можете добавить дополнительный блок сервера в начало файла:
server {
listen 80;
server_name example.com;
rewrite ^/(.*) https://example.com/$1 permanent;
}
…
Сохраните и закройте файл. Если вы используете nano
, нажмите Ctrl+X
, затем, когда появится запрос, нажмите Y
, а затем Enter.
Перед перезапуском Nginx вы можете проверить свою конфигурацию, используя nginx -t
:
- sudo nginx -t
Если нет никаких проблем, перезапустите Nginx, чтобы включить SSL через HTTPS:
- sudo systemctl restart nginx
Проверьте его, перейдя на ваш сайт через HTTPS, например, https://example.com
. Также вы захотите попробовать подключиться через HTTP, например, http://example.com
, чтобы убедиться, что перенаправление работает правильно.
Апач
Вот шаги для ручного развертывания SSL-сертификата на Apache.
Используя nano
или ваш любимый текстовый редактор, откройте ваш файл виртуального хоста Apache для редактирования:
- sudo nano /etc/apache2/sites-available/000-default.conf
Найдите запись <VirtualHost *:80>
и измените ее, чтобы ваш веб-сервер слушал порт 443
:
…
<VirtualHost *:443>
…
Next, добавьте директиву ServerName
, если ее еще нет:
…
ServerName example.com
…
Затем добавьте следующие строки для указания путей к вашему сертификату и ключу:
…
SSLEngine on
SSLCertificateFile /home/sammy/example.com.crt
SSLCertificateKeyFile /home/sammy/example.com.key
SSLCACertificateFile /home/sammy/intermediate.crt
…
На данном этапе ваш сервер настроен для прослушивания только HTTPS (порт 443), поэтому запросы HTTP (порт 80) не будут обрабатываться. Чтобы перенаправить запросы HTTP на HTTPS, добавьте следующее в начало файла (замените имя в обоих местах):
<VirtualHost *:80>
ServerName example.com
Redirect permanent / https://example.com/
</VirtualHost>
…
Сохраните и закройте файл. Если вы используете nano
, нажмите Ctrl+X
, затем, когда будет запрос, Y
, а затем Enter.
Включите модуль SSL Apache, выполнив эту команду:
- sudo a2enmod ssl
Теперь перезапустите Apache, чтобы загрузить новую конфигурацию и включить поддержку TLS/SSL через HTTPS.
- sudo systemctl restart apache2
Проверьте, обратившись к вашему сайту через HTTPS, например, https://example.com
. Также попробуйте подключиться через HTTP, например, http://example.com
, чтобы убедиться, что перенаправление работает правильно.
Заключение
В этом руководстве вы узнали, когда вам может понадобиться приобрести SSL-сертификат у коммерческого ЦС, и как сравнивать и выбирать из доступных вариантов. Вы также узнали, как настроить Nginx или Apache для поддержки HTTPS и как адаптировать их конфигурации для использования в производстве.
Затем вы можете прочитать о других случаях использования SSL, таких как работа с балансировщиками нагрузки.