Как создать файлы ssl сертификата

Обновлено: 05.07.2024

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

Генерация приватного ключа RSA используя параметры по умолчанию (ключ будет сохранён в файл с именем rootCA.key):

Опция -out указывает на имя файла для сохранения, без этой опции файл будет выведен в стандартный вывод (на экран). Имя выходного файла не должно совпадать с именем входного файла.

Конечно, опцию -pass pass:hello можно не указывать, тогда вам будет предложено ввести пароль во время генерации ключа.

Список поддерживаемых симметричных алгоритмов шифрования приватного ключа можно узнать в документации (раздел SUPPORTED CIPHERS):

Если для генерируемого ключа не указано количество бит, то по умолчанию используется 2048, вы можете указать другое количество бит с помощью команды вида (будет создан 4096-битный ключ):

Создание самоподписанного корневого сертификата

Здесь мы использовали наш корневой ключ для создания корневого сертификата (файл rootCA.crt), который должен распространяться на всех компьютерах, которые нам доверяют. А приватный ключ (файл rootCA.key) должен быть секретным, поскольку он будет использоваться для подписи сертификатов серверов.


Создание сертификатов (делается для каждого домена) включает в себя несколько этапов. Эту процедуру необходимо выполнить для каждого домена/сервера, которым требуется доверенный сертификат от нашего ЦС.

Создание приватного ключа сертификата

Обратите внимание, что это та же самая команда, которой мы создавали пару приватный-публичный ключ Центра Сертификации (изменено только имя файла с ключами).

Создание файла с запросом на подпись сертификата (csr)

Получив закрытый ключ, вы можете приступить к созданию запроса на подпись сертификата — Certificate Signing Request (CSR). Это официальный запрос к CA о подписании сертификата, который содержит открытый ключ объекта, запрашивающего сертификат, и некоторую информацию об объекте. Все эти данные будут частью сертификата. CSR всегда подписывается закрытым ключом, соответствующим открытому ключу, который он несёт.

Создание CSR обычно представляет собой интерактивный процесс, в ходе которого вы будете предоставлять элементы отличительного имени сертификата (вводить информацию о стране, городе, организации, email и т.д.). Внимательно прочитайте инструкции, предоставленные инструментом openssl; если вы хотите, чтобы поле было пустым, вы должны ввести одну точку (.) в строке, а не просто нажать «Enter». Если вы сделаете последнее, OpenSSL заполнит соответствующее поле CSR значением по умолчанию. (Такое поведение не имеет никакого смысла при использовании с конфигурацией OpenSSL по умолчанию, что и делают практически все. Это имеет смысл, когда вы осознаете, что можете изменить значения по умолчанию, либо изменив конфигурацию OpenSSL, либо предоставив свои собственные конфигурации в файлах).

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

Важно: имейте в виду, что при создании запроса на подпись важно указать Common Name, предоставляющее IP-адрес или доменное имя для службы, в противном случае сертификат не может быть проверен.

Я опишу здесь два способа:

Метод Б (в одну команду без запросов)

Этот метод генерирует тот же результат, что и метод A, но он подходит для использования в вашей автоматизации.

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

Проверка содержимого CSR

Создание сертификата

Если вы устанавливаете сервер TLS для своего собственного использования, вы, вероятно, не хотите идти в ЦС для покупки публично доверенного сертификата. Намного проще использовать сертификат, подписанный вашим собственным CA. Если вы являетесь пользователем Firefox, при первом посещении веб-сайта вы можете создать исключение для сертификата, после которого сайт будет защищён так, как если бы он был защищён общедоступным сертификатом.

Если у вас уже есть CSR, создайте сертификат, используя следующую команду:

В результате выполнения этих команд были созданы следующие файлы:

Для глубокого понимания OpenSSL смотрите также полное руководство: «OpenSSL: принципы работы, создание сертификатов, аудит».


Ответ прост: создать собственный сертификат, либо подписывающий сам себя, либо заверенный локальным корневым сервером, и внести его в хранилище доверенных сертификатов операционной системы. Далее этим сертификатом можно пользоваться на локальном веб-сервере.

В этой статье мы разберем процесс создания локального корневого сертификата (также известного, как источник сертификатов). Это позволит вам создавать сколько угодно сертификатов для доменных имен, но доверять только одному сертификату — корневому.

Важно отметить вот что: с 1 сентября 2020 года SSL-сертификаты не выдаются дольше, чем на тринадцать месяцев (397 дней). Поэтому для сертификатов, создаваемых в этой статье, мы ограничимся двенадцатью месяцами.

Источник сертификата (Certificate Authority)

1. Создайте закрытый ключ и самоподписанный сертификат

Опционально: если необходимо, можно заменить MY-CA в CN на что-нибудь другое.

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

2. Создайте файл сертификата с расширением .crt :

Сертификат доменного имени

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

1. Создайте файл расширения x509 v3:

Следуя этому шаблону, можно добавить сколько угодно доменных имен.

Примечание: пожалуйста, обновите DNS.4, DNS.5 и DNS.6 или удалите их, если у вас не настроены никакие локальные доменные имена.

2. Создайте закрытый ключ и запрос на подпись сертификата:

Опционально: страну, штат, город и организацию можно изменять.

3. Создайте самоподписанный сертификат:

Приложениям, обслуживающим ваш контент, понадобится доступ к файлам сертификата и закрытого ключа. Это может быть локальный веб-сервер (Apache или NGINX), локальный сервис или какой-то другой локальный инструмент, допустим, сборщик модулей DevServer.

Вот несколько примеров:

Apache

NGINX

webpack DevServer

Express.js


Вы рассчитывали увидеть кое-что другое, но именно этого и следовало ожидать — потому что источник сертификата еще не входит в число доверенных.

Чтобы получить обозначение безопасного доступа, ваш новый источник сертификата должен считаться доверенным на вашей машине. Процесс присваивания этого статуса различается в зависимости от операционной системы и удовлетворит большинство браузеров. Если вы используете Firefox, процесс имеет некоторые отличия.

macOS — Chrome и Safari

1. Дважды кликните на корневом сертификате ( ca.crt ).

2. Выберите нужную связку ключей Как создать файлы ssl сертификата ( login , если вы хотите, чтобы сертификат считался доверенным только в вашем аккаунте, или System , если сертификат должен считаться доверенным во всей системе).

3. Добавьте сертификат.

4. Откройте «Keychain Access» (если еще не открыт).

5. Выделите keychain, который выбрали раньше.

6. Вы должны увидеть сертификат MY-CA (это будет имя, которое вы, как CN, дали вашему источнику сертификата).

7. Дважды кликните по сертификату.

8. Разверните «Доверять» и выберите опцию «Доверять всегда» в пункте «При использовании этого сертификата».


9. Закройте окно сертификата и введите свой пользовательский пароль (если требуется).

Windows 10 — Chrome, IE11 и Edge

1. Дважды кликните на сертификате ( ca.crt ).

2. Кликните на кнопку «Установить сертификат».

3. Выберите, хотите ли вы хранить его на уровне пользователя или на уровне машины.

4. Кликните «Дальше».

5. Выберите «Разместить все сертификаты в следующем хранилище».

6. Кликните «Обзор».

7. Выберите «Доверенные корневые источники сертификатов».

9. Кликните «Дальше».

10. Кликните «Завершить».

11. Если появится подсказка, кликните «Да».

Firefox


Чтобы добавить разрешения сертификату, кликните «Дополнительно…». Сразу же после этого кликните на «Принять риск и продолжить», чтобы дать понять, что вы знаете о риске.

Это нужно сделать всего один раз, но для каждого локального домена.

Теперь, когда сертификат создан и доверие к нему обеспечено, вы без проблем можете посещать свой локальный домен! Обслуживание приложений стало безопасным, и вы можете спокойно продолжать разработку. Возвращаясь к примеру с Express, результат на экране будет таким:


Сайт полностью загружен, и рядом с URL в Chrome теперь отображается символ безопасного соединения.

Установка SSL-сертификата на сайт:
что понадобится

  1. Доступ в аккаунт на сайте компании, у которой вы купили сертификат. Чтобы активировать сертификат.
  2. Файл сертификата, приватный ключ и цепочка сертификатов. Это кусочки зашифрованного текста, которые включают шифрование на сайте. Вы получите их в процессе активации.
  3. Доступ к хостингу. Чтобы установить сертификат на сервер.

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

Сразу после покупки подключить SSL-сертификат к сайту не получится. Сначала его нужно активировать. Это можно сделать в аккаунте на сайте компании, у которой вы купили сертификат.

Для активации понадобятся ваши контактные данные и CSR-запрос — зашифрованная информация о домене и компании. CSR означает Certificate Signing Request, по-русски «запрос на выпуск сертификата».

Если покупали сертификат у нас, CSR получится создать в вашем аккаунте во время активации. Ещё CSR можно создать в панели управления хостингом или специальном приложении — CSR-генераторе.

Сгенерировать CSR на сервере Microsoft

Заполняйте поля внимательно
Перед тем как сгенерировать CSR, проверьте текст на опечатки. Если ввести домен с ошибкой, она отразится в CSR, и выпустить сертификат не получится. Придётся создавать новый запрос и начинать весь процесс заново.

После того как вы заполните информацию и сгенерируете запрос, на экране появится CSR и приватный ключ. Иногда появляется ещё один ключ — публичный. Но при активации и установке он не пригодится.

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

Текст CSR начинается со слов «BEGIN CERTIFICATE REQUEST».

-----BEGIN CERTIFICATE REQUEST----- MIIC4zCCAcsCAQAwgZ0xCzAJBgNVBAYTAlVBMRcwFQYDVQQIDA5LeWl2c2thIG9ibGFzdDENMAsGA1UEBwwES3lpdjEVMBMGA1UECgwMT3JnYW5pemF0aW9uMRMwEQYDVQQLDApEZXBhcnRtZW50MRUwEwYDVQQDDAx2YXNoZG9tZW4udGsxIzAhBgkqhkiG9w0BCQEWFGNvbnRhY3RAdmFzaGRvbWVuLnRrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAomSMkswt/BnAmRoLwJX3DvhC1faLSZ3hNYE2HEO5bqAXkUScfpGDq0UIK5n6qC3aOX9i5Qbdufp7ZfZbdAakuP6r6YKpXHShkC8/Zf1Lku+HzBSO9/zyLYmG01+0ldSe7koh2L21uPSm+x8JnXNV460PsO8QNlMbJ5MxBw9MkZpUeOl2dmICbYQTW3wzHTLCakYC8KbzZjkCdky8pUVOkUo9tcJ/qnOx9/RpgJ7Ojv+5WdU5uhPPeui1fw/ECnP/YN/5skTLGj3m0wRZdKcJKbVzMeMforfVMk/scuvbGVKxRd1z3+axnxhtjvQE7OEFjjkxxJcJmjAM2ORoxJrfSwIDAQABoAAwDQYJKoZIhvcNAQELBQADggEBAEH9SOLOKlV3dq3yYztwUs+Hw3hh31EACwwGertJ8MxtEyL58YNrUAhLLN6Nh7b8Dc5Cb8JeWZ2czR0U8pj/svCa60vG6muZ+KHQyikHCJPVzGYbkhjNRWTcateU1U5NK5lWrfvG8z3UdtRTaQ7V+d+VYaH0kou6Zpq6pobLSTQey5pxoTpIKV+0j5gPVnzkmiyjQaoKIO3pr3miBh7SXx2SgvrqDGZzHwBB7y9DaAWxXoayJT/3B2FtjRfFTvAspxTPl5C/Jiwou3cKYkQH6SRS9g9fxVqbhAxPD1EC5OW/Si6rQq48TpV8WoDAduDjw1goFyxaWeeGnkk+uJYAg9=

-----END CERTIFICATE REQUEST-----

Текст приватного ключа начинается со слов «BEGIN PRIVATE KEY».

-----BEGIN PRIVATE KEY----- MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCiZIySzC38GcCZGgvAlfcO+ELV9otJneE1gTYcQ7luoBeRRJx+kYOrRQgrmfqoLdo5f2LlBt25+ntl9lt0BqS4/qvpgqlcdKGQLz9l/UuS74fMFI73/PItiYbTX7SV1J7uSiHYvbW49Kb7Hwmdc1XjrQ+w7xA2UxsnkzEHD0yRmlR46XZ2YgJthBNbfDMdMsJqRgLwpvNmOQJ2TLylRU6RSj21wn+qc7H39GmAns6O/7lZ1Tm6E8966LV/D8QKc/9g3/myRMsaPebTBFl0pwkptXMx4x+it9UyT+xy69sZUrFF3XPf5rGfGG2O9ATs4QWOOTHElwmaMAzY5GjEmt9LAgMBAAECggEAEXi18xlKnUP8B7zYpNi9ovus3S5QYBQ/Za1IMBRNQAyzXGrAV5G6U9PyhBZl9HAyeVsuPavWcSr02cx+nGYWlNy5jD8Fj6/wrf2XWZa96cohlyBjHWU2fRW9zsIOQMyGaObK63HFumeAC6aUNz9wbzVwab3exal9U22vqa3ItCV1qd8UGHmvrMFc9g22DBFbh2RS8FaLHZqvBLYPqS1ngYzjAJrpyX9mCwpdq3/D/8CxqchRb5j+cdsEAcjnaEB30AXYM67hP4vN4vHkmUArb6AUkZtCcqsBIxO4R43Q/3ePwU/nSv391MsKvzpZ/9OqkjBkDj7PviFhO2QMWHEqIQKBgQDScuGUoka+laiKQQaqBq/M2sqE/Pw4n5xXehIJKBDDiV4L7XWOBF3zd0c4Uu/mn0Sq6qyTf5mVlWvWNJW96sJBs4QGv1yyQOCJGXMO9ren7dqD8Ny6+nc7nT/R3IEN8mi9xYQzuAh3ONTeusj0ntYpSP3a3ozC24ld84wjVU9n+wKBgQDFitnPVAYOa3GaMFPpYcLWdF3RN0C7tuX8Oc2MjzYLDP3IgsahZUU2xX/kP7+Ng3A2dqOBBFQHnej/yvhUJEYEGEJYMI2DiiQhduqDfRJ2stm6urIWKhHFZtly8tnhZqYDTKj1Z1J9P5C6D3143L2fBqPbr6g/hZJ7v24jN0E08QKBgHuc7THgC8vgnmnu/hoa6WJb1X8+FmywHCYp1rQ4K3iflHVPGrC7ke/zTQshdDazsKLwS0QsPCtn5DqjEp3GaiorZs6L0sgFYZ5GK5ZLht8F0EeV0CGoAycqG5WKfueRTsLBZQD4BUj6Qdc+QdGmBsejTzEjbez7BPoBl3wdnRHHAoGBAK3tENTwn9x2UTF2t4rWXlu/XRLl2QLtiBTJN+c3+FdGevPd4NEdfxE4VuA6GIeaYGQzlMX1b569M/ZzWK2MunDEgzVumkpkiGdGcjiPGICV/AnicwX8yGTLp00D8T35yNVC28glzoUkQGLxXIHbqMCpcf/s6u/yxQRbibdL4QehAoGALJweKVOZ2+s+AWnnU3Wup6aX2wRS1kRjdWwmJjd6BNwL0BL6UzFAWoLNS6cvKdipZbFFHjO5XfKG3k5hzTkaEFECMQOkJ6X0Atl4liai5jlMgmzYBvrBOmZsLev54VmYWjb91xgcN8Cas9yHAZ22ue8P4WuN2OmtkUUZUiAnmb=

-----END PRIVATE KEY-----

Чтобы установить SSL-сертификат на сайт, понадобятся три файла: файл с сертификатом, приватный ключ и цепочка сертификатов.

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

У файла сертификата будет расширение .CRT, а у файла цепочки сертификатов — .CA-BUNDLE. Если открыть любой из файлов в текстовом редакторе, текст будет начинаться со слов «BEGIN CERTIFICATE».

-----BEGIN CERTIFICATE----- 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

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

Когда вы подготовили все файлы, остаётся последний шаг — установка SSL-сертификата. В зависимости от вида хостинга и панели управления вам пригодится одна из инструкций:

Для панелей управления хостингом

Для командной строки сервера

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

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

В этом руководстве мы расскажем, как при помощи Certbot получить бесплатный SSL-сертификат и использовать его в Nginx на Ubuntu 16.04. Мы также покажем, как настроить автоматическое обновление SSL-сертификата во избежание истечения его срока действия. Если у вас запущен другой веб-сервер, следуйте его документации, чтобы узнать, как использовать сертификат для вашей конфигурации.

Let

Шаг 0. Подготовка

Перед тем, как приступить к работе, вам нужно убедиться в нескольких вещах.

У вас должен быть установлен сервер на Ubuntu 16.04, и создан пользователь (не root), для которого настроены sudo привилегии. Узнать, как это сделать, вы можете, следуя руководству по первичной настройке сервера на Ubuntu 16.04.

25–26 ноября, Москва и онлайн, От 24 000 до 52 000 ₽

Если все требования выполнены, приступаем к установке Certbot — клиента Let’s Encrypt.

Шаг 1. Устанавливаем Certbot

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

Для начала добавьте репозиторий:

Нажмите ENTER для подтверждения. После этого необходимо обновить пакеты:

По завершении установите Certbot, используя команду apt-get :

Теперь Certbot готов к использованию.

Шаг 2. Получаем SSL-сертификат

Certbot предоставляет несколько способов получения SSL-сертификатов при помощи разных плагинов. В отличие от плагина для Apache, который описан в другом руководстве, большинство плагинов помогут вам только получить сертификат, который придётся настроить на вашем сервере вручную. Плагины, которые позволяют только получать сертификаты и не устанавливают их, называются «аутентификаторами», так как они используются для подтверждения подлинности сервера, которому сертификат выдаётся.

Давайте разберёмся, как использовать плагин Webroot для получения SSL-сертификата.

Использование плагина Webroot

Алгоритм работы Webroot включает в себя создание специального файла в директории /.well-known . Она размещается в корневом каталоге веб-сервера (document root) и может быть открыта сервисом Let’s Encrypt для проверки. В зависимости от ваших настроек, вам может понадобиться явно разрешить доступ к папке /.well-known .

Если вы ещё не установили Nginx, сделайте это, следуя руководству по установке Nginx на Ubuntu 16.04.

Чтобы убедиться в том, что папка доступна сервису Let’s Encrypt, внесем небольшие изменения в конфигурацию Nginx. По умолчанию файл конфигурации находится в папке /etc/nginx/sites-available/default . Мы будем использовать редактор Nano для внесения изменений:

Внутри блока server добавьте такой блок location :

Вам также стоит посмотреть, где расположен корневой каталог веб-сервера (document root), так как этот путь необходим при работе с Webroot. Если вы используете стандартный файл конфигурации, она будет расположена в /var/www/html .

Сохраните и закройте файл.

Проверьте вашу конфигурацию на синтаксические ошибки:

Если ошибок нет, перезапустите Nginx, используя эту команду:

Примечание 1. Если в процессе вы получите ошибку вроде Failed to connect to host for DVSNI challenge , значит, вам нужно настроить файрвол вашего сервера, разрешив TCP-трафик на портах 80 и 443 .

Примечание 2. Если для вашего домена используется маршрутизация через такой DNS-сервис, как CloudFlare, вам придется временно отключить её до тех пор, пока сертификат не будет получен.

Файлы сертификата

После получения сертификата у вас должны появиться следующие файлы в PEM-кодировке:

  • cert.pem — сертификат вашего доменного имени;
  • chain.pem — цепочка сертификатов Let’s Encrypt;
  • fullchain.pem — объединённые cert.pem и chain.pem ;
  • privkey.pem — приватный (секретный) ключ вашего сертификата.

Важно запомнить расположение этих файлов, так как они будут использоваться в конфигурации вашего сервера. Сами файлы расположены в папке /etc/letsencrypt/archive . Однако Certbot создает симлинки на наиболее актуальные файлы сертификата в папке /etc/letsencrypt/live/ваше_доменное_имя/ . Так как символьные ссылки указывают на наиболее актуальные файлы сертификата, именно этот путь лучше использовать при обращении к ним.

Вы можете проверить существование файлов, используя такую команду (подставьте ваше доменное имя):

Результатом выполнения команды должны быть указанные выше файлы сертификата. Теперь вы можете настроить ваш сервер так, чтобы fullchain.pem использовался в качестве файла сертификата, а privkey.pem в качестве ключа сертификата.

Генерация ключа по алгоритму Диффи-Хеллмана

Для повышения безопасности вам необходимо сгенерировать ключ по алгоритму Диффи-Хеллмана. Для генерации ключа длиной 2048 бит используйте такую команду:

Процесс может занять несколько минут.

Шаг 3. Настраиваем TLS/SSL на веб-сервере

Теперь, когда у вас есть SSL-сертификат, необходимо настроить веб-сервер Nginx так, чтобы он начал его использовать.

Внесем некоторые изменения в нашу конфигурацию:

  1. Создадим сниппет конфигурации, содержащий расположение нашего SSL-ключа и файлов сертификата.
  2. Создадим сниппет конфигурации, содержащий настройки устойчивого SSL, которые можно будет использовать в будущем для любого сертификата.
  3. Обновим блоки server в конфигурации Nginx, которые будут управлять SSL-запросами и использовать оба вышеуказанных сниппета.

Такой подход к настройке Nginx позволяет сохранить блоки server чистыми и сделать конфигурацию доступной для повторного использования.

Создаем сниппет конфигурации для SSL-ключа и сертификата

Сперва создадим сниппет конфигурации Nginx в папке /etc/nginx/snippets .

Для правильного распознавания назначения файла назовем его ssl- , затем укажем доменное имя и в конце поставим .conf :

В этом файле необходимо установить соответствие директивы ssl_certificate файлу сертификата и ssl_certificate_key — соответствующему ключу. В нашем случае это будет выглядеть так:

Когда добавите эти строки, сохраните и закройте файл.

Создаем сниппет конфигурации с устойчивыми настройками шифрования

Следующим шагом мы создадим другой сниппет, определяющий некоторые настройки SSL. Это позволит Nginx подключить устойчивый «набор шифров» SSL (англ. cipher suite) и некоторые дополнительные функции, которые помогут обеспечить безопасность нашего сервера.

Прим. перев. Cipher Suite — это совокупность алгоритмов, используемых в конкретной TLS/SSL-сессии:

  • алгоритм выработки сессионных ключей шифрования;
  • алгоритм, используемый для аутентификации сервера;
  • непосредственно сам симметричный алгоритм шифрования трафика;
  • и алгоритм контроля целостности (MAC, message authentication code).

Установленные нами параметры могут быть использованы повторно для конфигураций Nginx в будущем, поэтому дадим файлу стандартное название:

Для настройки безопасной связки Nginx-SSL мы будем использовать рекомендации сайта Cipherli.st. Он создан для предоставления быстрого доступа к готовым настройкам шифрования популярного программного обеспечения. Дополнительная информация доступна в руководстве по настройке SSL для Nginx.

Примечание. Предлагаемые стандартные настройки на сайте Cipherli.st обеспечивают устойчивую безопасность, но иногда это приводит к ухудшению совместимости. Если вам необходимо поддерживать более старые версии клиентов, используйте альтернативный список настроек, доступный при нажатии на значок «Yes, give me a ciphersuite that works with legacy/old software.» Составить такой список можно и вручную.

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

Сперва добавим DNS-резолвер. Используем для нашего руководства тот, что предлагает Google. Затем установим в качестве параметра ssl_dhparam указатель на файл ключа Диффи-Хеллмана, который мы сгенерировали ранее.

После внесения изменений сохраните и закройте файл.

Настраиваем конфигурацию Nginx для SSL

Теперь, когда мы подготовили сниппеты, можно обновить нашу конфигурацию Nginx и подключить SSL.

В данном руководстве мы полагаем, что вы используете стандартный файл с блоками server , расположенный в папке /etc/nginx/sites-available . Если вы используете другой файл с блоками server , замените название в представленных ниже командах.

Перед тем, как двигаться дальше, давайте сделаем резервную копию нашего текущего файла с блоками server :

Теперь откройте файл с блоками server для внесения изменений:

Внутри ваш блок server , вероятно, начинается так:

Разделим конфигурацию на два отдельных блока. После первых двух директив listen добавим директиву server_name , указывающую на доменное имя вашего сервера. Затем установим перенаправление на созданный нами второй блок server . После этого закроем текущий блок:

Примечание. У вас может быть только одна директива listen , которая подключает модификатор default_server для каждой комбинации версии IP и порта. Если для выбранных портов у вас включены другие блоки server , для которых настроен default_server , вам придется удалить модификатор у одного из блоков.

После внесения изменений сохраните и закройте файл.

Если вы хотите или вынуждены разрешить и шифрованный, и нешифрованный контент, вам придётся настроить Nginx немного иначе. Так делать не стоит, но в некоторых ситуациях это может быть необходимо. По сути, мы склеим разделенные блоки server в один и уберём перенаправление:

После внесения изменений сохраните и закройте файл.

Шаг 4. Настраиваем файрвол

Если у вас включен файрвол ufw, вам необходимо обновить настройки и разрешить SSL-трафик. К счастью, Nginx регистрирует несколько профилей с ufw после установки.

Вы можете посмотреть текущие настройки, введя:

Теперь состояние файрвола должно выглядеть так:

Шаг 5. Подключаем изменения в Nginx

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

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

В случае успеха ваш результат должен выглядеть следующим образом:

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

Вы можете использовать инструмент Qualys SSL Labs Report, чтобы посмотреть оценку конфигурации вашего сервера:

Такая настройка SSL должна показать рейтинг A+.

Шаг 6. Настраиваем автоматическое обновление

Сертификаты от Let’s Encrypt действуют только в течение 90 дней. Это побуждает пользователей к автоматизации процесса обновления. Нам понадобится создать регулярно запускающуюся команду для проверки и автоматического обновления сертификатов, срок которых истекает.

Для запуска проверки ежедневных обновлений мы будем использовать Cron — стандартный системный сервис для запуска повторяющихся задач. Задачи Cron указываются в файле под названием crontab :

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

Часть строчки 15 3 * * * означает «запускай следующую команду в 3:15 ночи ежедневно». Вы можете выбрать любое время.

Команда renew для Certbot проверит все сертификаты, установленные в системе, и обновит каждый, срок использования которого истекает менее, чем через 30 дней. Ключ --quiet говорит Certbot’у ничего не выводить и не ждать ввода от пользователя. --renew-hook "/bin/systemctl reload nginx" перезагрузит Nginx, чтобы он использовал новые файлы сертификата, но только в случае, если произошло обновление.

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

Заключение

В данном руководстве мы установили клиент сервиса Let’s Encrypt — Certbot, загрузили SSL-сертификаты для наших доменов, настроили Nginx, чтобы он использовал эти сертификаты, и настроили автоматическое обновление. Если у вас остались вопросы по использованию Certbot, его документация вам поможет.

Читайте также: