Как установить ssl-сертификат на ubuntu nginx

Обновлено: 03.07.2024

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

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

Чтобы создать SSL-сертификат для Nginx, в первую очередь нужно убедиться, что Nginx уже установлен:

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

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

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

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

После того, как мы выполним эту команду, нам будет предложено ввести некоторую информацию, такую ​​как страна, компания, адрес, адрес электронной почты и, возможно, некоторые другие поля. сертификат создан и используется на нашем сайте. Наиболее важным является значение «общее имя». Здесь следует ввести наше полное доменное имя. Необязательное название компании и контрольный пароль оставляем пустыми.

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

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

Теперь мы готовы создать и подписать наш сертификат:

Он будет действителен в течение 1 года (365 дней). Это то, что можно изменить при необходимости. Теперь мы можем использовать сертификат и назначить виртуальный хост. Мы можем скопировать пример файла конфигурации Nginx в новый файл и использовать его. Наиболее важным разделом в файле является следующий:

После внесения изменений и сохранения файла мы должны скопировать файл конфигурации виртуального хоста в /etc/nginx/sites-enabled/, а затем перезапустить Nginx.

Хотели бы вы узнать о Zuul, инструменте управления проектами CI/CD? Скачайте нашу белую книгу и читайте!

Как улучшить свою игру DevOps с помощью Project Gating

Мохаммед Насер 2020-10-29T20:17:45+00:00 21 марта 2014 г. | Комментарии отключены о том, как создать SSL-сертификат на Nginx для Ubuntu

TLS, или безопасность транспортного уровня, и его предшественник SSL, что означает уровень защищенных сокетов, – это веб-протоколы, используемые для переноса обычного трафика в защищенную зашифрованную оболочку.

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

В этом руководстве мы покажем вам, как настроить самозаверяющий сертификат SSL для использования с веб-сервером Nginx на сервере Ubuntu 18.04.

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

Самозаверяющий сертификат может подойти, если у вас нет доменного имени, связанного с вашим сервером, и в случаях, когда зашифрованный веб-интерфейс не открыт для пользователя. Если у вас есть доменное имя, во многих случаях лучше использовать сертификат, подписанный ЦС. Вы можете узнать, как настроить бесплатный доверенный сертификат для проекта Let’s Encrypt, здесь.

Предпосылки

Чтобы следовать этому руководству, вам потребуется:

  • Один Ubuntu 18.04 настроен с пользователем без полномочий root, настроенным с привилегиями sudo и брандмауэром. Вы можете узнать, как настроить такую ​​учетную запись пользователя, следуя нашей первоначальной настройке сервера для Ubuntu 18.04.
  • Вам также потребуется установить веб-сервер Nginx. Если вы хотите установить на свой сервер весь стек LEMP (Linux, Nginx, MySQL, PHP), следуйте нашему руководству по настройке LEMP в Ubuntu 18.04.
  • Если вам нужен только веб-сервер Nginx, вы можете следовать нашему руководству по установке Nginx в Ubuntu 18.04.

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

Шаг 1. Создание SSL-сертификата

TLS/SSL работает с использованием комбинации открытого сертификата и закрытого ключа. Ключ SSL хранится в секрете на сервере. Он используется для шифрования содержимого, отправляемого клиентам. SSL-сертификат общедоступен всем, кто запрашивает контент. Его можно использовать для расшифровки содержимого, подписанного соответствующим ключом SSL.

Вы можете создать пару самоподписанного ключа и сертификата с помощью OpenSSL с помощью одной команды:

Вот что делает каждая часть этой команды:

  • sudo : команда sudo позволяет членам группы sudo временно повысить свои привилегии до уровня другого пользователя (по умолчанию это суперпользователь или пользователь root). В данном случае это необходимо, так как мы создаем пару сертификата и ключа в каталоге /etc/, доступ к которому может получить только пользователь root или другие привилегированные учетные записи.
  • openssl : это основной инструмент командной строки для создания сертификатов, ключей и других файлов OpenSSL и управления ими.
  • req : эта подкоманда указывает, что мы хотим использовать управление запросом на подпись сертификата (CSR) X.509. X.509 — это стандарт инфраструктуры открытых ключей, которого придерживаются SSL и TLS при управлении ключами и сертификатами. Мы хотим создать новый сертификат X.509, поэтому мы используем эту подкоманду.
  • -x509 : это еще больше изменяет предыдущую подкоманду, сообщая утилите, что мы хотим создать самозаверяющий сертификат вместо создания запроса на подпись сертификата, как это обычно происходит.
  • -nodes : указывает OpenSSL пропустить возможность защиты нашего сертификата с помощью парольной фразы. Нам нужно, чтобы Nginx мог прочитать файл без вмешательства пользователя при запуске сервера. Кодовая фраза предотвратит это, потому что нам придется вводить ее после каждого перезапуска.
  • -days 365 : этот параметр устанавливает период времени, в течение которого сертификат будет считаться действительным. Здесь мы установили его на один год.
  • -newkey rsa:2048 : указывает, что мы хотим создать новый сертификат и новый ключ одновременно. Мы не создали ключ, необходимый для подписи сертификата на предыдущем шаге, поэтому нам нужно создать его вместе с сертификатом. Часть rsa:2048 сообщает ему, что необходимо создать ключ RSA длиной 2048 бит.
  • -keyout : эта строка указывает OpenSSL, куда поместить сгенерированный файл закрытого ключа, который мы создаем.
  • -out : указывает OpenSSL, где разместить сертификат, который мы создаем.

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

Заполните подсказки надлежащим образом. Самая важная строка — это та, которая запрашивает общее имя (например, полное доменное имя сервера или ВАШЕ имя). Вам нужно ввести доменное имя, связанное с вашим сервером, или, что более вероятно, общедоступный IP-адрес вашего сервера.

Подсказки будут выглядеть следующим образом:

Оба созданных вами файла будут помещены в соответствующие подкаталоги каталога /etc/ssl.

При использовании OpenSSL вам также следует создать сильную группу Диффи-Хеллмана, которая используется при согласовании с клиентами режима Perfect Forward Secrecy.

Вы можете сделать это, запустив следующее:

Это займет некоторое время, но когда это будет сделано, у вас будет сильная группа DH в /etc/nginx/dhparam.pem, которая будет использоваться во время настройки.

Шаг 2. Настройка Nginx для использования SSL

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

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

Этот метод настройки Nginx позволит вам поддерживать чистоту серверных блоков и помещать общие сегменты конфигурации в повторно используемые модули.

Создание фрагмента конфигурации, указывающего на ключ SSL и сертификат

Сначала с помощью предпочитаемого вами текстового редактора создайте новый фрагмент конфигурации Nginx в каталоге /etc/nginx/snippets. В следующем примере используется nano :

Чтобы правильно определить назначение этого файла, назовите его self-signed.conf :

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

Добавив эти строки, сохраните файл и выйдите из редактора. Если вы использовали nano , вы можете сделать это, нажав CTRL + X , затем Y и ENTER .

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

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

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

Чтобы безопасно настроить Nginx SSL, мы адаптируем рекомендации от Cipherlist.eu. Cipherlist.eu – это полезный и понятный ресурс для понимания настроек шифрования, используемых в популярном программном обеспечении.

Примечание. Параметры, предлагаемые Cipherlist.eu, обеспечивают надежную защиту. Иногда это происходит за счет большей совместимости клиентов. Если вам нужна поддержка старых клиентов, существует альтернативный список, доступ к которому можно получить, щелкнув ссылку на странице с надписью «Да, дайте мне набор шифров, который работает с устаревшим/старым программным обеспечением». При желании вы можете заменить этот список содержимым следующего примера блока кода.

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

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

Сначала добавьте предпочитаемый преобразователь DNS для исходящих запросов. В этом руководстве мы будем использовать Google (8.8.8.8 и 8.8.4.4).

Добавьте в файл фрагмента кода ssl-params.conf следующее:

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

Сохраните и закройте файл, когда закончите.

Настройка конфигурации Nginx для использования SSL

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

В этом руководстве предполагается, что вы используете настраиваемый файл конфигурации блока сервера в каталоге /etc/nginx/sites-available. Это руководство также следует соглашениям из обязательного руководства по Nginx и использует /etc/nginx/sites-available/your_domain для этого примера. При необходимости замените имя файла конфигурации.

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

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

Внутри ваш серверный блок, вероятно, начинается примерно так:

В вашем файле может быть другой порядок, и вместо директив root и index у вас может быть какое-то расположение , proxy_pass или другие настраиваемые операторы конфигурации. Это нормально, так как вам нужно только обновить директивы listen и включить фрагменты SSL. Затем измените этот существующий блок сервера, чтобы он обслуживал трафик SSL через порт 443, и создайте новый блок сервера, чтобы он отвечал через порт 80 и автоматически перенаправлял трафик на порт 443.

Примечание. Используйте переадресацию 302, пока не убедитесь, что все работает правильно. Позже вы измените это на постоянную переадресацию 301.

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

Затем добавьте второй блок сервера в файл конфигурации после закрывающей скобки ( > ) первого блока:

Шаг 3. Настройка брандмауэра

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

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

На выходе появится список, подобный следующему:

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

После запуска sudo ufw status вы должны получить следующий вывод:

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

Шаг 4 — Включение изменений в Nginx

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

Сначала проверьте, что в наших файлах нет синтаксических ошибок. Вы можете сделать это, запустив sudo nginx -t :

Если все сделано успешно, вы получите следующий результат:

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

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

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

Шаг 5 — Тестирование шифрования

Теперь вы готовы протестировать свой SSL-сервер.

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

Предупреждение о самоподписанном сертификате Nginx
< /p>

Это предупреждение является ожидаемым и нормальным. Нас интересует только аспект шифрования нашего сертификата, а не сторонняя проверка подлинности нашего хоста. Нажмите «ДОПОЛНИТЕЛЬНО», а затем ссылку, предоставленную для перехода к вашему хосту:

Переопределение с собственной подписью Nginx

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

Если в результате появится тот же значок, это означает, что ваша переадресация сработала правильно.

Шаг 6. Переход на постоянную переадресацию

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

Снова откройте файл конфигурации блока сервера:

Найдите возврат 302 и измените его на возврат 301 :

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

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

Когда будете готовы, перезапустите Nginx, чтобы сделать перенаправление постоянным:

После перезагрузки изменения вступят в силу, и перенаправление станет постоянным.

Заключение

Хотите узнать больше? Присоединяйтесь к сообществу DigitalOcean!

Присоединяйтесь к нашему сообществу DigitalOcean, насчитывающему более миллиона разработчиков, бесплатно! Получайте помощь и делитесь знаниями в нашем разделе "Вопросы и ответы", находите руководства и инструменты, которые помогут вам расти как разработчику и масштабировать свой проект или бизнес, а также подписывайтесь на интересующие вас темы.

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

Доступные цифровые сертификаты SSL для сервера Nginx в Ubuntu

Доверенная третья сторона, называемая центром сертификации (ЦС), выдает три типа цифровых сертификатов: проверка домена (DV), проверка организации (OV) и расширенная проверка (EV). ЦС гарантирует подлинность цифрового сертификата с помощью цифровой подписи, чтобы конечные пользователи (или их программное обеспечение) могли быть уверены, что сервер действительно является тем сайтом, за который он претендует. Не знаете, какой цифровой сертификат лучше всего выбрать? Ниже я подробно описал каждый из них, перечислив их в порядке убывания безопасности.

Проверка домена (DV)

Подтверждение организации (OV)

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

Расширенная проверка (EV)

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

Как защитить сервис с помощью SSL-сертификата

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

Если вы приобрели SSL-сертификат, одобренный ЦС, доставка может занять от нескольких часов для DV до нескольких недель для EV. Центр сертификации сообщит вам, когда сертификат будет готов для загрузки. Вот как получить его за семь шагов:

  1. Войдите в Диспетчер учетных записей.
  2. Нажмите SSL-сертификаты.
  3. Выберите сертификат, который хотите использовать, и нажмите «Управление».
  4. Рядом с сертификатом, который вы хотите использовать, в столбце "Действия" нажмите "Просмотреть статус".
  5. Нажмите "Загрузить".
  6. Выберите тип сервера и нажмите Загрузить Zip-файл.
  7. Надежно сохраните загруженный файл на будущее.

Как установить сертификат SSL для сервера Nginx в Ubuntu

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

1. Войдите на сервер, используя SSH.

2. Проверьте клиентское программное обеспечение OpenSSL.

Убедитесь, что клиентское программное обеспечение OpenSSL, необходимое для безопасного веб-сайта, установлено:

Это либо установит OpenSSL, либо сообщит вам, что он уже установлен.

3. Создайте каталог для хранения ключа сервера и сертификата.

4. Скопируйте файл сертификата SSL и ключ сервера.

Вот пример использования текстового процессора vi:

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

6. Перезапустите веб-сервер.

Используйте следующую команду для перезапуска веб-сервера:

Узнайте о четырех доступных типах SSL-сертификатов:

Эффективно добиваться лучших результатов.

Когда вы используете The Hub от GoDaddy Pro, в вашем дне внезапно появляется больше времени, чтобы сосредоточиться на самом важном. Забудьте о жонглировании задачами администратора. Высвободите свое время и используйте его, чтобы клиенты чувствовали себя центром вашей вселенной.

Стивен Воан-Николс

Стивен Дж. Воан-Николс (также известный как sjvn) писал о технологиях и бизнесе технологий с тех пор, как CP/M-80 была передовой, операционная система ПК, 300 бит/с — быстрое подключение к Интернету, WordStar — состояние художественный текстовый процессор, и он нам понравился. Его работы публиковались во всех изданиях, от высокотехнологичных изданий (IEEE Computer, ACM NetWorker, Byte) до деловых изданий (eWEEK, InformationWeek, ZDNet), популярных технологий (Computer Shopper, PC Magazine, PC World) и основной прессы (Washington Post). , San Francisco Chronicle, BusinessWeek).

Установка SSL-сертификата на NGINX обеспечивает безопасное соединение между вашим веб-сервером и браузером. Он шифрует данные, передаваемые через Интернет, чтобы они были видны только предполагаемому получателю.

В этой статье показано, как установить SSL-сертификат на NGINX с помощью простых пошаговых инструкций.

Учебник по установке SSL-сертификатов на NGINX

  • Сертификат сервера, выданный центром сертификации для вашего домена.
  • Промежуточные сертификаты
  • Ваш закрытый ключ
  • NGINX установлен в вашей системе
  • Учетная запись пользователя с правами sudo

Этапы установки сертификата SSL NGINX

В этом руководстве предполагается, что вы уже создали запрос на подпись сертификата и получили сертификат SSL, выданный центром сертификации (ЦС). Если вы еще не получили сертификат, следуйте нашему руководству по созданию запроса на подпись сертификата (CSR) и отправке его в ЦС.

Шаг 1. Объедините все сертификаты в один файл

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

Первый шаг — объединить все три файла в один.

диаграмма, показывающая Объединение сертификатов в единый файл пакета SSL

Вы можете сделать это вручную, скопировав и вставив содержимое каждого файла в текстовый редактор и сохранив новый файл под именем ssl-bundle.crt.

Это также можно сделать с помощью командной строки. Команда для объединения сертификатов в один файл будет зависеть от того, есть ли у вас отдельные промежуточные файлы или эти файлы находятся внутри одного файла .ca-bundle.

a) Если все три сертификата указаны отдельно, используйте команду:

b) Если промежуточные сертификаты находятся в одном пакете, запустите:

Примечание. Обязательно сохраните файл ssl-bundle.crt в каталоге etc/ssl.

Шаг 2. Отредактируйте файл конфигурации NGINX

Затем настройте серверный блок NGINX (файл виртуального хоста AKA) для вашего сервера.

Если вы не знаете расположение файла, выполните команду:

Откройте файл, чтобы внести необходимые изменения.

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

  1. Начните с указания, что сервер должен прослушивать порт 443: прослушивайте 443;
  2. Убедитесь, что в блоке server есть строка: ssl on;
  3. Укажите путь сертификата SSL: ssl_certificate/etc/ssl/ssl-bundle.crt;
  4. Укажите каталог, в котором находится ключ сертификата SSL: /path/to/your_private.key;

Файл конфигурации должен выглядеть примерно так, как показано ниже:

Сохраните и закройте файл. Шаг 3. Перезапустите сервер NGINX

Чтобы изменения конфигурации вступили в силу, необходимо перезапустить сервер NGINX. Для этого выполните команду:

Шаг 4. Проверка SSL-сертификата

Лучший способ проверить, успешно ли вы установили SSL-сертификат на NGINX, — это подключиться к вашему серверу через браузер.

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

Проверить установку сертификата SSL на Nginx с символом замка

Если вы выполнили описанные выше шаги, вы должны были установить SSL-сертификат на свой сервер NGINX. Обязательно установите отдельные сертификаты на каждую машину, если у вас более одного сервера NGINX.

Let’s Encrypt — это бесплатный центр сертификации, который позволяет настроить защиту на вашем сервере NGINX. Прочтите нашу статью о том, как настроить Let’s Encrypt для защиты вашего сервера Nginx.

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