Вопрос или проблема
Я работаю с Nginx и Certbot, я обеспечил домен с HTTPS. Я хотел бы поднять уровень домена до TLS 1.3.
Серверный блок Nginx для моего домена получает свои SSL протоколы из включаемого файла, который создает Certbot.
Файл /etc/letsencrypt/options-ssl-nginx.conf
утверждает, что если я изменю файл, Certbot не сможет автоматически предоставить обновления безопасности.
Я хочу изменить строку файла ssl_protocols
, добавив TLSv1.3
в конец, но не хочу нарушить автоматические обновления certbot.
Возможно ли указать certbot включить TLS 1.3?
Версии программного обеспечения
- Nginx 1.14.0
- OpenSSL 1.1.1
- Certbot 0.31.0
- Ubuntu 18.04
Если вы установите обновленную версию Certbot, то у вас будет включен TLS 1.3 по умолчанию, Snap – лучший способ установить Certbot (Больше инструкций здесь: https://certbot.eff.org/).
#Эти инструкции работают для Ubuntu 18.04 и Ubuntu 20.04
#сначала нужно убедиться, что другой certbot не установлен
sudo apt-get remove certbot -y < /dev/null
#установить Certbot с помощью упаковки Snap
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Позже запустите Certbot так, как вам нужно
sudo certbot --nginx -d yourdomain.com --agree-tos -m [email protected] --redirect
Или
sudo certbot certonly --nginx -d yourdomain.com --agree-tos -m [email protected] --redirect
Или
sudo certbot certonly --webroot -w /var/www/yourdomain.com/public_html -d yourdomain.com
Nginx/ Ubuntu не поддерживает TLSv1.3 на уровне SSL библиотеки. Поэтому вам нужно будет пересобрать весь стек ssl и скомпилировать все из исходников. Ubuntu 18.04 поставляется с OpenSSL 1.1.0. Замена системной библиотеки OpenSSL не является хорошей идеей, но вы можете скачать исходный код OpenSSL 1.1.1 и скомпилировать Nginx с исходным кодом OpenSSL 1.1.1, чтобы включить TLS 1.3.
https://github.com/certbot/certbot/issues/6367#issuecomment-601937964 Certbot поддерживает tls1.3, когда nginx и openssl поддерживают его с самой последней версией
Ответ или решение
Вопрос: Могу ли я включить TLS 1.3 с помощью Certbot?
Можно, однако, необходимо учитывать несколько факторов, связанных с вашей текущей конфигурацией и версиями используемого программного обеспечения. Рассмотрим детально, как осуществить включение TLS 1.3 в вашем случае.
Комплектующее ПО
У вас установлены следующие версии программного обеспечения:
- Nginx: 1.14.0
- OpenSSL: 1.1.1
- Certbot: 0.31.0
- Ubuntu: 18.04
TLS 1.3 поддерживается начиная с OpenSSL 1.1.1. Таким образом, ваша версия OpenSSL поддерживает TLS 1.3, однако версия Nginx имеет значение, так как именно она отвечает за конфигурацию SSL.
Certbot и автоматические обновления
Файл, созданный Certbot, который вы упомянули (/etc/letsencrypt/options-ssl-nginx.conf
), действительно не рекомендуется изменять вручную, так как это может привести к проблемам с автоматическими обновлениями сертификатов. Certbot ожидает, что его конфигурация остается неизменной, чтобы гарантировать корректную работу.
Как включить TLS 1.3
-
Обновите Certbot: В более новых версиях Certbot поддержка TLS 1.3 активируется по умолчанию. Убедитесь, что вы используете последнюю версию Certbot, установив его через Snap, что является рекомендованным методом на Ubuntu.
sudo apt-get remove certbot -y < /dev/null sudo snap install --classic certbot sudo ln -s /snap/bin/certbot /usr/bin/certbot
-
Обновление OpenSSL и Nginx: Поскольку вы используете Ubuntu 18.04, вам нужно будет обновить OpenSSL до версии 1.1.1, если это еще не сделано. Вы также должны убедиться, что ваша версия Nginx скомпилирована с поддержкой OpenSSL 1.1.1. Это может потребовать перекомпиляции Nginx из исходного кода, что может быть трудоемким процессом.
- Чтобы включить поддержку TLS 1.3 в Nginx, вам необходимо скачивать исходный код Nginx и компилировать его с OpenSSL 1.1.1:
# Установите необходимые зависимости sudo apt-get install build-essential libpcre3-dev libssl-dev zlib1g-dev
Скачайте Nginx и OpenSSL
wget http://nginx.org/download/nginx-1.14.0.tar.gz
wget https://www.openssl.org/source/openssl-1.1.1.tar.gzРазархивируйте и соберите
tar -xzvf nginx-1.14.0.tar.gz
tar -xzvf openssl-1.1.1.tar.gz
cd nginx-1.14.0
./configure –with-openssl=../openssl-1.1.1
make
sudo make install - Чтобы включить поддержку TLS 1.3 в Nginx, вам необходимо скачивать исходный код Nginx и компилировать его с OpenSSL 1.1.1:
-
Настройка конфигурации Nginx: После успешной компиляции Nginx с поддержкой OpenSSL 1.1.1, вам нужно будет отредактировать файл конфигурации вашего сервера Nginx для включения TLS 1.3.
В вашем файле конфигурации Nginx добавьте или измените строку с
ssl_protocols
:ssl_protocols TLSv1.2 TLSv1.3;
-
Перезапустите Nginx: После внесения изменений перезапустите сервер:
sudo systemctl restart nginx
Заключение
Включение TLS 1.3 с использованием Certbot возможно, но требует соблюдения ряда условий, включая обновление вашего программного обеспечения и возможно перекомпиляцию Nginx. После выполнения всех шагов убедитесь, что все работает корректно, и используйте инструменты, такие как SSL Labs для проверки конфигурации безопасности вашего сервера.