#nginx #ssl #tls1.3
#nginx #ssl #tls1.3
Вопрос:
Итак, я играл с TLSv1.3 в nginx и во время тестов с curl
и openssl
я увидел следующую картину:
curl -v https://domain-using-tls2
:
...
<request headers>
>
* TLSv1.2 (IN), TLS handshake, Newsession Ticket (4):
* Connection state changed (MAX_CONCURRENT_STREAMS == 128)!
< HTTP/2 200
<response headers>
...
curl -v https://domain-using-tls3
:
...
<request headers>
>
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* old SSL session ID is stale, removing
* Connection state changed (MAX_CONCURRENT_STREAMS == 128)!
< HTTP/2 200
<response headers>
...
И, копая openssl s_client -connect domain-using-tls3:443
, следующий блок появляется дважды (последовательно) с разными значениями:
...
Post-Handshake New Session Ticket arrived:
SSL-Session:
Protocol : TLSv1.3
Cipher : TLS_AES_256_GCM_SHA384
Session-ID: 819CA63CCA685293BDC0B45243F835AE891F55144218CB8FB35AA7F21C37B5AF
Session-ID-ctx:
Resumption PSK: EC0F7DAEFA69EF162BDB2D23D7017D5E4D5F8B4E37461C016FFEE110EA7A9DB42B0C4E34558780CBDEE1827E2A70A0F7
PSK identity: None
PSK identity hint: None
SRP username: None
TLS session ticket lifetime hint: 300 (seconds)
TLS session ticket:
0000 - 62 b6 46 5a d2 1e f5 0d-6c 05 a1 00 f7 0d 5b bd b.FZ....l.....[.
0010 - bd 4e 27 96 cc ee 88 dd-a3 5f 03 6f fb 5b 0d 1f .N'......_.o.[..
Start Time: 1606408171
Timeout : 7200 (sec)
Verify return code: 0 (ok)
Extended master secret: no
Max Early Data: 0
...
Итак, мой вопрос: есть ли что-то в протоколе TLSv1.3, что заставляет nginx отправлять билет сеанса дважды или это что-то особенное для nginx? потому что это выглядит просто чем-то избыточным, что будет проигнорировано клиентом….
Комментарии:
1. Билет отличается в TLS1.3 от предыдущих версий; он фактически задает имя для производного PSK, которое сохраняет прямую секретность, и их может быть несколько, см. RFC8446 . Nginx использует OpenSSL и, по-видимому, не изменяет значение по умолчанию 2 . Я не уверен, почему OpenSSL выбрал это значение по умолчанию, но вы также можете увидеть его с
openssl s_sarver
помощью andopenssl s_client
. Если вы хотите продолжить это, на самом деле это не вопрос или проблема программирования и было бы более подходящим для security.stackexchange.com .2. Я столкнулся с аналогичной проблемой. Ссылка аналогична (nginx openssl tls 1.3). В моем случае есть авторизация через cookie, которая состоит из нескольких подзапросов, и в автоматическом режиме с сохранением cookie в файл ничего не работает. При следующем запросе файл cookie заменяется, что приводит к ошибке 403