Установите Wildcard Certs From Lets Encrypt в Nginx в Ubuntu 19.04

В марте 2018 года Let's Encrypt добавил поддержку подстановочных сертификатов. Сертификаты с подстановочными знаками позволяют защитить все дочерние домены первого уровня одним сертификатом. Подстановочные сертификаты можно получить только через ACMEv2, который является обновленной версией протокола ACME. Чтобы использовать ACMEv2 для подстановочных или не подстановочных сертификатов, вам потребуется клиент, обновленный для поддержки ACMEv2. Одним из таких клиентов является acme.sh, который является клиентом протокола ACME / ACMEv2, написанным исключительно на языке оболочки (оболочки Unix) без каких-либо зависимостей. Кроме того, домены с подстановочными знаками должны проверяться с использованием типа запроса DNS-01. Это означает, что вам нужно изменить записи DNS TXT, чтобы подтвердить контроль над доменом для получения сертификата с подстановочными знаками.

В этом руководстве мы объясним, как получить и развернуть бесплатные групповые сертификаты из Let's Encrypt в Ubuntu 19.04 с помощью acme.shклиента, инструмента Lexicon для автоматического манипулирования записями DNS с использованием API-интерфейса Vultr и развертывания сертификатов на веб-сервере Nginx.

Требования

  • Недавно развернутый облачный сервер Ubuntu 19.04 Vultr.
  • У вас есть зарегистрированное доменное имя. Это руководство использует example.comв качестве примера домена.
  • Убедитесь, что вы установили DNS-записи A / AAAA и CNAME для своего полного доменного имени (FQDN). Возможно, вы захотите ознакомиться с руководством Введение в Vultr DNS, если вам необходимо ознакомиться с концепциями DNS.
  • Доступ к Vultr API включен в панели управления учетной записью Vultr.

Прежде чем вы начнете

Проверьте версию Ubuntu.

lsb_release -ds
# Ubuntu 19.04

Создайте новую учетную запись пользователя с sudoдоступом и вашим предпочтительным именем пользователя и переключитесь на него. Мы используем johndoe.

adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe

ПРИМЕЧАНИЕ . Замените johndoeна свое имя пользователя.

Установите часовой пояс.

sudo dpkg-reconfigure tzdata

Убедитесь, что ваша система Ubuntu обновлена.

sudo apt update && sudo apt upgrade -y

Установите необходимые пакеты.

sudo apt install -y git wget curl socat

Установить Nginx

Установите веб-сервер Nginx.

sudo apt install -y nginx

Проверьте версию.

sudo nginx -v
# nginx version: nginx/1.15.9 (Ubuntu)

Установить Python и Лексикон

В качестве первого шага в процессе получения подстановочных сертификатов из Let's Encrypt с использованием acme.sh и Vultr API вам необходимо установить Python и Lexicon . Lexicon - это пакет Python, который предоставляет способ стандартизированной обработки DNS-записей на нескольких DNS-провайдерах.

Установите Python, если он еще не установлен в вашей системе.

sudo apt install -y python3

Подтвердите установку, проверив версию.

python3 --version
# Python 3.7.3

Установите инструмент Lexicon. Лексикон - это инструмент Python, который позволяет вам стандартизированным образом управлять записями DNS на различных провайдерах DNS.

sudo apt install -y lexicon

Проверьте версию лексикона.

lexicon --version
# lexicon 3.0.8

Установить acme.shклиент

Acme.shявляется клиентом протокола ACME, написанным исключительно на языке оболочки (оболочки Unix), который автоматизирует процесс получения подписанного сертификата с помощью Let's Encrypt. Он поддерживает ACME v1 и ACME v2 и, что наиболее важно, поддерживает сертификаты подстановочных знаков ACME v2. В этом разделе мы устанавливаем скрипт Acme.sh.

ПРИМЕЧАНИЕ. Рекомендуется использовать rootпользователя для установки acme.sh, хотя он не требует root/ sudoдоступа.

Переключитесь на rootпользователя от обычного пользователя, если вы его создали.

sudo su - root

Загрузите и установите acme.sh.

git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail "[email protected]"
source ~/.bashrc
cd

Проверьте версию.

acme.sh --version
# v2.8.2

Получить сертификаты подстановочных знаков от Let's Encrypt

Чтобы получить сертификат подстановочного знака, мы можем использовать только метод проверки DNS. Мы используем Lexicon и Vultr DNS API для управления TXT DNS-записями.

Получите сертификаты RSA и ECC для вашего домена.

# Configure your API key and username
export PROVIDER=vultr
export LEXICON_VULTR_USERNAME="[email protected]"
export LEXICON_VULTR_TOKEN="XXXXXXXXXXXXXXX"

# RSA 2048
acme.sh --issue --dns dns_lexicon -d example.com -d '*.example.com' --keylength 2048
# ECC 256
acme.sh --issue --dns dns_lexicon -d example.com -d '*.example.com' --keylength ec-256

ПРИМЕЧАНИЕ . Не забудьте заменить example.comсвоим именем домена и заменить значения заполнителя API-интерфейса Vultr своими собственными.

После выполнения предыдущих команд ваши сертификаты и ключи находятся в:

  • Для RSA: ~/.acme.sh/example.comкаталог.
  • Для ECC / ECDSA: ~/.acme.sh/example.com_eccкаталог.

ПРИМЕЧАНИЕ . Не следует использовать файлы сертификатов в ~/.acme.sh/папке, они предназначены только для внутреннего использования, структура каталогов в будущем может измениться.

Чтобы перечислить свои сертификаты, вы можете запустить:

acme.sh --list

Создайте папку для хранения ваших сертификатов в производстве. Мы используем /etc/letsencryptкаталог.

sudo mkdir -p /etc/letsencrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc

Установите / скопируйте сертификаты для производственного использования на вашем сервере.

# RSA
acme.sh --install-cert -d example.com \
        --cert-file /etc/letsencrypt/example.com/cert.pem \
        --key-file /etc/letsencrypt/example.com/private.key \
        --fullchain-file /etc/letsencrypt/example.com/fullchain.pem \
        --reloadcmd "sudo systemctl reload nginx.service"

# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc \
        --cert-file /etc/letsencrypt/example.com_ecc/cert.pem \
        --key-file /etc/letsencrypt/example.com_ecc/private.key \
        --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem \
        --reloadcmd "sudo systemctl reload nginx.service"

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

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

exit

Настройте веб-сервер Nginx

Запустите sudo vim /etc/nginx/sites-available/example.com.confи заполните файл следующим содержимым. Замените все вхождения example.comсвоим собственным доменным именем.

server {

  listen 443 ssl http2;
  listen [::]:443 ssl http2;

  server_name example.com *.example.com;
  root /var/www/example.com;

  # RSA
  ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/example.com/private.key;
  # ECDSA
  ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;

}

Активируйте новую example.com.confконфигурацию, связав файл с sites-enabledкаталогом.

sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/

Проверьте конфигурацию Nginx.

sudo nginx -t

Перезагрузить Nginx.

sudo systemctl reload nginx.service

Вот и все. Мы развернули сертификаты с подстановочными знаками на Nginx, используя acme.sh, Lexicon и Vultr API. Сертификаты с подстановочными знаками могут быть полезны, если вы хотите защитить несколько поддоменов первого уровня, генерируемых динамически.



Leave a Comment

Создание внешнего интерфейса HTML 5 RDP / SSH с использованием гуакамоле в Ubuntu 16.04 LTS

Создание внешнего интерфейса HTML 5 RDP / SSH с использованием гуакамоле в Ubuntu 16.04 LTS

Введение Цель этого руководства - избавиться от общедоступных соединений SSH и общедоступных RDP. Поместив все это за очень удобный клиент HTML5

Настройка Chroot в Debian

Настройка Chroot в Debian

Эта статья научит вас, как настроить chroot-джейл в Debian. Я предполагаю, что вы используете Debian 7.x. Если вы используете Debian 6 или 8, это может сработать, но

Настройте Apache с самоподписанным сертификатом TLS / SSL в Ubuntu 16.04

Настройте Apache с самоподписанным сертификатом TLS / SSL в Ubuntu 16.04

Протокол SSL и его преемник TLS (Secure Sockets Layer / Transport Layer Security) добавляют уровень шифрования между клиентом и сервером. Без этого

Как включить TLS 1.3 в Apache на Debian 10

Как включить TLS 1.3 в Apache на Debian 10

Используете другую систему? TLS 1.3 - это версия протокола безопасности транспортного уровня (TLS), который был опубликован в 2018 году в качестве предлагаемого стандарта в RFC 8446.

Обеспечение безопасности MongoDB

Обеспечение безопасности MongoDB

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

Как дополнительно защитить SSH с помощью последовательности стука портов в Ubuntu 18.04

Как дополнительно защитить SSH с помощью последовательности стука портов в Ubuntu 18.04

Используете другую систему? Введение Помимо изменения порта по умолчанию для SSH и использования пары ключей для аутентификации, можно использовать стук портов.

Как включить TLS 1.3 в Apache на FreeBSD 12

Как включить TLS 1.3 в Apache на FreeBSD 12

Используете другую систему? TLS 1.3 - это версия протокола безопасности транспортного уровня (TLS), который был опубликован в 2018 году в качестве предлагаемого стандарта в RFC 8446.

Как включить TLS 1.3 в Nginx на Debian 9

Как включить TLS 1.3 в Nginx на Debian 9

Используете другую систему? Введение TLS 1.3 - это версия протокола безопасности транспортного уровня (TLS), опубликованная в 2018 году в качестве предлагаемого стандарта в РФ.

Как установить rkhunter на Ubuntu

Как установить rkhunter на Ubuntu

Rkhunter - это программа, которая находит руткиты на сервере Linux. Руткиты устанавливаются хакерами, чтобы они всегда могли получить доступ к серверу. В этом документе вы будете

Vultr Firewall

Vultr Firewall

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

Как включить TLS 1.3 в Nginx в Ubuntu 18.04 LTS

Как включить TLS 1.3 в Nginx в Ubuntu 18.04 LTS

Используете другую систему? TLS 1.3 - это версия протокола безопасности транспортного уровня (TLS), который был опубликован в 2018 году в качестве предлагаемого стандарта в RFC 8446.

Как защитить vsFTPd с помощью SSL / TLS

Как защитить vsFTPd с помощью SSL / TLS

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

Настройка LetsEncrypt в Linux

Настройка LetsEncrypt в Linux

LetsEncrypt - это центр сертификации с автоматическим клиентом. Короче говоря, это означает, что вы можете защитить свои сайты бесплатно. Это верно, вы можете г

Как установить сканер уязвимостей OpenVAS в Ubuntu 16.04

Как установить сканер уязвимостей OpenVAS в Ubuntu 16.04

Введение OpenVAS - это пакет с открытым исходным кодом, который можно использовать для сканирования уязвимостей и управления ими. Он стоит за открытым Vulnerabilit

Модификация Icinga2 для использования модели Master / Client в CentOS 6 или CentOS 7

Модификация Icinga2 для использования модели Master / Client в CentOS 6 или CentOS 7

Icinga2 - мощная система мониторинга, и при использовании в модели мастер-клиент она может заменить необходимость проверок на основе NRPE. Мастер-клиент

Как отключить SELinux в CentOS 7

Как отключить SELinux в CentOS 7

SELinux, аббревиатура от Security-Enhanced Linux, является улучшением безопасности операционной системы Linux. Это система маркировки, которая блокирует многие

Как установить Ntopng на Ubuntu 16.04

Как установить Ntopng на Ubuntu 16.04

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

Позволяет зашифровать: переход с TLS-SNI-01

Позволяет зашифровать: переход с TLS-SNI-01

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

Как установить ModSecurity для Nginx в CentOS 7, Debian 8 и Ubuntu 16.04

Как установить ModSecurity для Nginx в CentOS 7, Debian 8 и Ubuntu 16.04

ModSecurity - это модуль брандмауэра веб-приложений с открытым исходным кодом (WAF), который отлично подходит для защиты Apache, Nginx и IIS от различных кибератак, нацеленных на

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

6 невероятных фактов о Nintendo Switch

6 невероятных фактов о Nintendo Switch

Многие из вас знают Switch, который выйдет в марте 2017 года, и его новые функции. Для тех, кто не знает, мы подготовили список функций, которые делают «Switch» обязательным гаджетом.

Технические обещания, которые все еще не выполнены

Технические обещания, которые все еще не выполнены

Вы ждете, когда технологические гиганты выполнят свои обещания? проверить, что осталось недоставленным.

Функциональные возможности уровней эталонной архитектуры больших данных

Функциональные возможности уровней эталонной архитектуры больших данных

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

Как ИИ может вывести автоматизацию процессов на новый уровень?

Как ИИ может вывести автоматизацию процессов на новый уровень?

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

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA стало довольно сложно решать пользователям за последние несколько лет. Сможет ли он оставаться эффективным в обнаружении спама и ботов в ближайшем будущем?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

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

Телемедицина и удаленное здравоохранение: будущее уже здесь

Телемедицина и удаленное здравоохранение: будущее уже здесь

Что такое телемедицина, дистанционное здравоохранение и их влияние на будущее поколение? Это хорошее место или нет в ситуации пандемии? Прочтите блог, чтобы узнать мнение!

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

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

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Недавно Apple выпустила macOS Catalina 10.15.4, дополнительное обновление для исправления проблем, но похоже, что это обновление вызывает больше проблем, приводящих к поломке компьютеров Mac. Прочтите эту статью, чтобы узнать больше