TLS 1.3のセッション再開と初期データが私のNGINX 1.16サーバーで機能しないのはなぜですか?

TLS 1.3のセッション再開と初期データが私のNGINX 1.16サーバーで機能しないのはなぜですか?

サーバー情報:

freebsd@FreeBSD-Website:~ % freebsd-version
12.0-RELEASE-p5
freebsd@FreeBSD-Website:~ % /usr/local/bin/openssl version
OpenSSL 1.1.1c 28 May 2019
freebsd@FreeBSD-Website:~ % nginx -V
nginx version: nginx/1.16.0
built with OpenSSL 1.1.1c 28 May 2019
TLS SNI support enabled
configure arguments:
.
.
.

/usr/local/etc/nginx/nginx.conf:

user www;
.
.
.
http {
    .
    .
    .
    ssl_protocols TLSv1.3;
    ssl_prefer_server_ciphers on;
    .
    .
    .
    ssl_early_data on;
    ssl_session_tickets on;
    ssl_session_cache shared:SSL:50m;
    ssl_session_timeout 1d;
    .
    .
    .
}
.
.
.

SSL研究所の彫刻:

セッション再開(チケット)と0-RTTの両方のアクティブ化は「いいえ」と表示されます。

OpenSSL出力:

freebsd@FreeBSD-Website:~ % set host=www.example.com
freebsd@FreeBSD-Website:~ % printf "HEAD / HTTP/1.1\r\nHost: $host\r\nConnection: close\r\n\r\n" > request.txt
freebsd@FreeBSD-Website:~ % /usr/local/bin/openssl s_client -connect $host\:443 -tls1_3 -sess_out session.pem < request.txt
CONNECTED(00000003)
.
.
.
Post-Handshake New Session Ticket arrived:
SSL-Session:
    Protocol  : TLSv1.3
    Cipher    : TLS_AES_256_GCM_SHA384
    Session-ID: 85...
    Session-ID-ctx:
    Resumption PSK: 52...
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 86400 (seconds)
    TLS session ticket:
    0000 - ...
    .
    .
    .
    Start Time: 1561132567
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
    Extended master secret: no
    Max Early Data: 16384
---
read R BLOCK
---
Post-Handshake New Session Ticket arrived:
.
.
.
---
read R BLOCK
DONE
freebsd@FreeBSD-Website:~ % /usr/local/bin/openssl s_client -connect $host\:443 -tls1_3 -sess_in session.pem -early_data request.txt
CONNECTED(00000003)
.
.
.
Reused, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
.
.
.
Early data was rejected
Verify return code: 0 (ok)
---
---
Post-Handshake New Session Ticket arrived:
.
.
.
---
read R BLOCK
closed

OpenSSL観察:

  • Session-ID-ctx初期リクエストを送信するときは空です。そうすべきかどうかはわかりません。
  • Post-Handshake New Session Ticket初期要求を送信した後と、Session-IDResumption PSKすべてTLS session ticket異なります。なぜ一つも受けられなかったのか分からない。
  • 前のデータを使用して2番目の要求を送信すると、少なくともハンドシェイクが再利用されたことを示します。
  • 初期データが拒否されたため、別のデータを受け取りましたが、Post-Handshake New Session Ticket今回は1つしかありませんでした。 、、、Session-IDおよびResumption PSKTLS session ticket前の2つとは異なります。
  • 2番目の要求は最終的に中断され、閉じるのに約30秒かかりました。最初の要求は実際に完了し、これはDONEこの行に表示されます。

OpenSSLとNGINXにいくつかの奇妙なことがあることを知っています(例:ディレクティブを使用して TLS 1.3ssl_ciphersパスワードを指定することはできません。)、しかしこれが別の例であるかどうかはわかりません。私が逃したものはありますか?

ベストアンサー1

この回答は満足のいくものではなく、「証拠」と見なすことは困難です。私は私のWebサーバーでTLS 1.2を有効にしましたが、SSL Labsは私のWebサイトの評価をAからA +に向上させただけでなく、セッション回復が有効になったことを示しました。それでも0-RTTアクティベーションは表示されません。

TLS 1.3を有効にして他の多くのWebサイトをテストしました。https://scotthelme.co.ukそしてhttps://cromwell-intl.comまた、0-RTT がアクティブでないとマークされます。 Scottのサイトでは、サーバーはCloudflareであり、0-RTTの有効化について話しています。

つまり、TLS 1.3は、テストや一部の機能(少なくともOpenSSLやNGINXでは)に比べて新すぎると思います。私のウェブサイトを追加することもできないことを追加する必要があります。https://hstspreload.org/TLS 1.3のみサポートされています。サーバーにTLS 1.2を追加したときにセッションの再開が発生した唯一の理由は、TLS 1.3にのみ存在する0-RTTとは異なり、セッションの再開がTLS 1.2にあることです。私はこの問題が今後数ヶ月で解決されると確信しています。

おすすめ記事