TLS - это аббревиатура от Transport Layer Security. Это криптографические протоколы, разработанные для обеспечения безопасности сетевых коммуникаций. TLS используется веб-сайтами и другими приложениями, такими как IM (мгновенный обмен сообщениями), электронная почта, веб-браузеры, VoIP и т.д. для защиты всех соединений между сервером и клиентом.
Примечание о настройке для TLS 1.2 или 1.3
Поддержка TLS 1.2 работает только для следующих браузерах:
- Firefox 27+
- Android 4.4.2+
- Chrome 31+
- Edge, IE 11 на Windows 7 или выше
- Java 8u31
- OpenSSL 1.0.1
- Opera 20+
- Safari 9+
Другими словами, старый клиент с Windows XP или старая версия Android/Java работать не будут.
TLS 1.3
TLS 1.3 поддерживает только Firefox 63+, Android 10.0+, Chrome 70+, Edge 75, Java 11, OpenSSL 1.1.1, Opera 57 и Safari 12.1.
Использование только TLS 1.2
Отредактируйте файл nginx.conf:
1 | nano /etc/nginx/nginx.conf |
ИЛИ отредактируйте виртуальный хост:
1 | nano /etc/nginx/vhosts.d/example.com |
Обновить/дополнить следующим образом:
TLSv1.1 и TLSv1.2 (1.1.13, 1.0.12) работают только при использовании OpenSSL 1.0.1 или выше. Параметр TLSv1.3 (1.13.0) работает только при использовании OpenSSL 1.1.1, построенного с поддержкой TLSv1.3.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | server { listen 443 ssl http2; server_name example.com www.example.com # Path to certs ssl_certificate /etc/nginx/ssl/example.com.csr; ssl_certificate_key /etc/nginx/ssl/example.com.key; ssl_session_timeout 1d; ssl_session_cache shared:MySSL:10m; ssl_session_tickets off; ssl_dhparam /etc/nginx/ssl/example.com.pem; ssl_protocols TLSv1.2; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; # HSTS add_header Strict-Transport-Security "max-age=63072000" always; # OCSP stapling ssl_stapling on; ssl_stapling_verify on; # проверка цепочки доверия ответа OCSP с помощью корневого ЦС и промежуточных сертификатов ssl_trusted_certificate /etc/nginx/ssl/fullchain.pem; # замените на IP-адрес вашего DNS сервера resolver 77.88.8.8 } |
Включить TLS 1.3 в Nginx
Для TLS версии 1.2 и 1.3 используйте следующее в конфигурационном файле nginx:
1 | ssl_protocols TLSv1.2 TLSv1.3; |
Просто включите только TLS версии 1.3 в nginx:
1 | ssl_protocols TLSv1.3; |
Вот пример конфигурации только для TLS 1.3:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | server { listen 443 ssl http2; listen [::]:443 ssl http2; server www.example.com; ssl_certificate /etc/nginx/ssl/fullchain.pem; ssl_certificate_key /etc/nginx/ssl/key.pem; ssl_session_timeout 1d; ssl_session_cache shared:SharedNixCraftSSL:10m; ssl_session_tickets off; # TLS 1.3 only ssl_protocols TLSv1.3; ssl_prefer_server_ciphers off; # HSTS (ngx_http_headers_module is required) (63072000 seconds) add_header Strict-Transport-Security "max-age=63072000" always; # OCSP stapling ssl_stapling on; ssl_stapling_verify on; # проверка цепочки доверия ответа OCSP с помощью корневого ЦС и промежуточных сертификатов ssl_trusted_certificate /etc/nginx/ssl/fullchain.pem; # замените на IP-адрес вашего DNS сервера resolver 77.88.8.8; } |
Перезагрузите или перезапустите nginx
Теперь сервер настроен. Пришло время проверить наш сервер nginx config на наличие синтаксических ошибок:
1 | nginx -t |
Перезагрузите или перезапустите сервер nginx:
1 2 3 | systemctl restart nginx ## ИЛИ ## service nginx restart |
Проверка поддержки Nginx TLS 1.2
Выполните команду curl следующим образом (замените www.example.com на ваше реальное доменное имя):
1 | curl -I -v --tlsv1.2 --tls-max 1.2 https://www.example.com/ |
Проверка поддержки Nginx TLS 1.3
1 | curl -I -v --tlsv1.3 --tls-max 1.3 https://www.example.com/ |
Проверка поддержки Nginx TLS 1.1/1.0 (должно быть неудачно)
В этом последнем примере, проверьте, использует ли Nginx TLS 1.0/1.1:
1 | curl -I -v --tlsv1 --tls-max 1.0 https://www.example.com/ |
1 | curl -I -v --tlsv1.1 --tls-max 1.1 https://www.example.com/ |