Недавно я создал сайт с certbot --nginx -d <domain>
. В /etc/letsencrypt/options-ssl-nginx.conf
, Я добавил TLSv1.3 в ssl_protocols
директива. Однако, когда я захожу на сайт (Chrome 68), на вкладке безопасности отображается TLSv1.2. Я тестировал сайт с помощью ssllabs.com, который также показал, что включена только версия TLS 1.0-1.2.
Я не вижу ошибок в journalctl -u nginx.service | grep -i tls
или grep -i tls /var/log/nginx/*.log
.
Как я мог решить эту проблему? Я проверил все свои файлы конфигурации и все файлы журналов и не нашел источника (или какой-либо информации) о проблеме.
Информация о программном обеспечении:
Конфигурация сайта (сгенерирована certbot
): https://hastebin.com/oragojozol.nginx
/etc/letsencrypt/options-ssl-nginx.conf
: https://hastebin.com/cepalomisi.nginx
OpenSSL 1.1.0g 2 ноя 2017
Я даже не смотрел на то, что вы делаете, но OpenSSL 1.1.0 просто еще не поддерживает TLS 1.3. TLS 1.3 поддерживается только начиная с OpenSSL 1.1.1. Видеть Использование TLS1.3 с OpenSSL Чтобы получить больше информации.
Я полчаса задавался вопросом, почему мой Nginx на Ubuntu Eoan (N 1.16.5, OpenSSL 1.1.1c) по-прежнему работает с TLSv1.2 и бродил по Интернету в поисках возможных причин и нашел примечание для проверки файла Certbot особенно полезным.
Смотреть в /etc/letsencrypt/options-ssl-nginx.conf
. Он содержит эту строку:
ssl_protocols TLSv1.0 TLSv1.1 TLSv1.2;
Поскольку этот файл (обычно) include
данные server
уровень блока, он имеет приоритет над тем, что вы установили на http
блочный уровень.
Если у тебя есть ssl_protocols
в твоем http
block, безопасно просто удалить эту ненужную строку из файла, как я. Затем мои настройки вступили в силу после перезагрузки.
# /etc/nginx/nginx.conf
ssl_protocols TLSv1.2 TLSv1.3;
root@iBug-Server:/etc/nginx # nginx -tq && nginx -s reload
# Or use `systemctl reload nginx.service`
Пока Ubuntu не выпустит обновление по умолчанию для него, вы можете использовать TLSv1.3 через Ondrej Sury PPA, который недавно был обновлен.
По сути, вам нужно будет добавить его репозитории PPA nginx и nginx-qa, удалить nginx по умолчанию и установить его PPA nginx и openssl следующим образом:
sudo add-apt-repository ppa:ondrej/nginx-mainline
sudo add-apt-repository ppa:ondrej/nginx-qa
sudo apt-get update; #This is not needed in Ubuntu 18.04
sudo apt-get -y remove nginx; #If you already installed default Nginx
sudo apt-get -y install nginx openssl
Я объяснил шаги для ручной установки openssl 1.1.1 на HowToForge но использовать вышеупомянутый PPA проще и безопаснее.