サーバー情報:
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研究所の彫刻:
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-ID
がResumption PSK
すべてTLS session ticket
異なります。なぜ一つも受けられなかったのか分からない。- 前のデータを使用して2番目の要求を送信すると、少なくともハンドシェイクが再利用されたことを示します。
- 初期データが拒否されたため、別のデータを受け取りましたが、
Post-Handshake New Session Ticket
今回は1つしかありませんでした。 、、、Session-ID
およびResumption PSK
はTLS 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にあることです。私はこの問題が今後数ヶ月で解決されると確信しています。