Welcome! Log In Create A New Profile

Advanced

Протокол TLSv1.3 и директива ssl_reject_handshake в сервере по-умолчанию

Gena Makhomed
January 27, 2021 08:02PM
Здравствуйте, All!

nginx/1.19.6 из официального репозитория nginx.org
openssl-1.1.1g-12.el8_3.x86_64 из репозитория CentOS 8.3

Протокол TLSv1.3 включен, но если в сервере по умолчанию прописать
директиву "ssl_reject_handshake on;" тогда протокол TLSv1.3 перестает
работать для всех серверов.

Фрагмент конфигурации nginx на уровне http:

http {
# ...
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
ssl_ciphers
ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384;
ssl_conf_command Ciphersuites
TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384;
# ...
}

Комментирование директивы "ssl_conf_command Ciphersuites ... ;"
не помогает решить проблему - протокол TLSv1.3 по прежнему не работает.

Конфигурация сервера по-умолчанию:

# cat /etc/nginx/conf.d/default.conf

server {
listen 111.111.111.111:443 bind default_server ssl http2;
ssl_reject_handshake on;
server_name default-server;
location / {
return 444;
}
}

Конфигурация обычного сервера:

# cat /etc/nginx/conf.d/example.com.conf
server {
listen 111.111.111.111:443 ssl http2;
server_name example.com;
ssl_certificate
/etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
add_header Strict-Transport-Security max-age=31536000 always;
location / {
return 200 "OK";
}
}

Попытка подключения к серверу example.com по протоколу TLSv1.3
завершается ошибкой:

# openssl s_client -tls1_3 -connect example.com:443 -servername example.com
CONNECTED(00000003)
140542584969024:error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert
protocol version:ssl/record/rec_layer_s3.c:1543:SSL alert number 70
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 235 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---

Это ошибка в nginx или я что-то делаю не так?

Если в сервере по-умолчанию закомментировать директиву
"ssl_reject_handshake on;" и прописать какой-нибудь сертификат,

#ssl_reject_handshake on;
ssl_certificate
/etc/letsencrypt/live/example.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.net/privkey.pem;

Тогда попытка подключения к серверу example.com по протоколу TLSv1.3
завершается успешно:

# openssl s_client -tls1_3 -connect example.com:443 -servername example.com

CONNECTED(00000003)
---
Certificate chain
0 s:CN = example.com
i:C = US, O = Let's Encrypt, CN = R3
1 s:C = US, O = Let's Encrypt, CN = R3
i:O = Digital Signature Trust Co., CN = DST Root CA X3
---
Server certificate
-----BEGIN CERTIFICATE-----
[...]

--
Best regards,
Gena

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Протокол TLSv1.3 и директива ssl_reject_handshake в сервере по-умолчанию

Gena Makhomed January 27, 2021 08:02PM

Re: Протокол TLSv1.3 и директива ssl_reject_handshake в сервере по-умолчанию

damir bikmuhametov January 27, 2021 11:10PM

Re: Протокол TLSv1.3 и директива ssl_reject_handshake в сервере по-умолчанию

Gena Makhomed January 28, 2021 04:56AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 57
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready