Как легко включить TLS 1.3 в Nginx на Ubuntu 18.10, 18.04, 16.04, 14.04 — Information Security Squad
Как легко включить TLS 1.3 в Nginx на Ubuntu 18.10, 18.04, 16.04, 14.04

TLS 1.3 повышает производительность и безопасность

По производительности TLS 1.2 требует двух раундов, чтобы установить соединение HTTPS.

С TLS 1.3 требуется только одна поездка туда и обратно.

TLS 1.3 также поддерживает режим нулевого обратного хода (возобновление сеанса 0-RTT), позволяя клиентам, которые ранее подключались к вашему веб-сайту, отправлять HTTP-запрос на первое сообщение на сервер.

Это имеет большое значение для пользователей в мобильных сетях или в отдаленных местах.

Что касается безопасности, TLS 1.3 удалил поддержку старых наборов шифров, которые отвечают за эксплойты, такие как атака ROBOT.

Это, конечно, упрощенное объяснение.

CloudFlare имеет хорошее подробное объяснение TLS 1.3.

Требования к включению TLS 1.3

Есть два требования, чтобывключить TLS 1.3 с Nginx.

  • Ваша версия Nginx должна поддерживать TLS 1.3. Это означает Nginx 1.13 или выше.
  • Nginx необходимо построить с помощью OpenSSL 1.1.1 или выше.

Ubuntu 18.10 с OpenSSL 1.1.1

Ubuntu 18.10 поставляется с OpenSSL 1.1.1, а пакет Nginx из репозитория Ubuntu 18.10 собран с OpenSSL 1.1.1.

Таким образом, пользователи Ubuntu 18.10 могут все реализовать.

Установка последней версии Nginx с OpenSSL 1.1.1 на Ubuntu 18.04, 16.04 и 14.04

Пакет Nginx из Ubuntu 18.04, 16.04, 14.04 репозиториев не собран с OpenSSL 1.1.1.

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

К счастью, мы можем установить Nginx из PPA (личный пакетный архив) Ondřej Surý, который является разработчиком Debian и важной фигурой в сообществе DNS.

Он поддерживает множество пакетов для репозитория Debian, включая Apache, BIND, MariaDB, PHP и т. д.

Он также является одним из разработчиков официального сертификата PPA.

Поэтому я доверяю его PPA и использую его на своих серверах.

Если вы ранее добавили другой репозиторий Nginx (например, nginx.org), отключите его.

Например, у меня есть другой репозиторий Nginx, определенный в файле /etc/apt/sources.list.d/nginx-repo.list.

Я просто закомментирую все строки в этом файле, чтобы отключить его.

Чтобы добавить Ondřej Surý Nginx PPA в Ubuntu, выполните следующую команду:

sudo add-apt-repository ppa:ondrej/nginx

sudo apt update

Затем удалите существующий пакет Nginx. (Ваши файлы конфигурации Nginx не будут удалены.)

sudo apt remove nginx

И установите Nginx из PPA.

sudo apt install nginx

Ваш плагин Nginx вашего certbot может быть удален вместе с Nginx, поэтому установите его обратно.

sudo apt install python3-certbot-nginx

Теперь проверьте версию Nginx.

sudo nginx -V

Теперь вы должны увидеть следующее:

nginx version: nginx/1.14.1
built with OpenSSL 1.1.1 11 Sep 2018 (running with OpenSSL 1.1.0g 2 Nov 2017)
TLS SNI support enabled

Этот PPA также предоставляет OpenSSL 1.1.1 для Ubuntu 18.04.

Если ваш Nginx на Ubuntu 18.04 все еще работает с OpenSSL 1.1.0, вам необходимо обновить пакет OpenSSL.

sudo apt upgrade

Обратите внимание: если вы используете Google compute engine во время выполнения указанной выше команды вы увидите следующее сообщение.

The following packages have been kept back:
     libssl1.1 openssl

Это связано с тем, что пакет OpenSSL 1.1.1 конфликтует с некоторыми пакетами Google.

Для обновления OpenSSL вам потребуется выполнить следующую команду.

sudo apt dist-upgrade

Включить TLS 1.3 в виртуальном хосте Nginx

Когда у вас есть готовый пакет Nginx с OpenSSL 1.1.1, откройте свой файл виртуального хоста Nginx.

sudo nano /etc/nginx/conf.d/site.conf

или

sudo nano /etc/nginx/sites-enabled/site.conf

Чтобы включить TLS 1.3, просто добавьте TLSv1.3 в директиву ssl_protocols в блоке сервера SSL.

ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

Если вы используете сертификат Let’s Encrypt, ваша конфигурация SSL может быть установлена в файле /etc/letsencrypt/options-ssl-nginx.conf.

Кстати, certbot по умолчанию разрешает TLSv1, который небезопасен, его можно удалить.

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

Затем перезапустите Nginx, чтобы изменения вступили в силу.

sudo systemctl restart nginx

Проверка версии TLS в веб-браузере

Используя Firefox 63 или выше, перезагрузите свою веб-страницу, щелкните правой кнопкой мыши на пустой области и выберите View Page Info в контекстном меню.

Перейдите на вкладку « Security», и вы увидите, что TLS 1.3 используется.

Используя Google Chrome 70 или выше, перезагрузите веб-страницу на своем сайте.

Затем нажмите Ctrl + Alt + I, чтобы открыть Инструменты разработчика.

Перейдите на вкладку «Security», и вы увидите, что TLS 1.3 у вас используется. (В зависимости от ОС вам может потребоваться ввести chrome://flags/#tls13-variant в адресной строке Chrome и переключиться с по умолчанию на Enabled (Final), чтобы использовать TLS 1.3.)

Используется ли TLSv1.3 между Cloudflare и сервером Origin?

Нет. Хотя Cloudflare поддерживает TLS 1.3 на переднем сервере, в настоящее время он использует TLSv1.2 при подключении к исходному серверу.

Чтобы проверить, какая версия TLS используется, вы можете создать собственный формат журнала в файле /etc/nginx/nginx.conf.

sudo nano /etc/nginx/nginx.conf

Добавьте следующий текст в контексте http.

log_format combined_ssl '$remote_addr - $remote_user [$time_local] '
                  '$ssl_protocol/$ssl_cipher '
                  '"$request" $status $body_bytes_sent '
                  '"$http_referer" "$http_user_agent"';

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

Затем добавьте директиву access_log в контексте SSL-сервера.

Журнал находится в формате comb_ssl.

access_log /var/log/nginx/your-site.access.log combined_ssl;

Сохраните и закройте файл. Затем перезагрузите Nginx.

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

162.158.92.17 - - [14/Nov/2018:23:22:48 +0000] TLSv1.2/ECDHE-RSA-AES128-GCM-SHA256 "GET / HTTP/1.1

См. также:

Как включить TLS 1.3 в Chrome, Safari и Firefox?

Как включить TLS 1.3 в macOS через терминал

Как включить только TLS 1.2 только на веб-сервере Nginx

Как настроить SFTP VSFTPD с SSL / TLS на Ubuntu 18.04

Как включить TLS 1.3 в Nginx, Cloudflare

Как отключить SSlv2, SSLv3 и TLSv1 в Apache.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

5e7fa976b0640d40