서버 정보:
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
모두 다릅니다. 왜 하나도 못 받았는지 모르겠어요.- 이전 데이터를 사용하여 두 번째 요청을 보내면 최소한 핸드셰이크가 재사용되었음을 표시합니다.
- 초기 데이터가 거부되었기 때문에 다른 데이터를 받았는데
Post-Handshake New Session Ticket
이번에는 하나만 있었습니다. ,Session-ID
,Resumption PSK
및 는TLS session ticket
이전 두 개와 다릅니다. - 두 번째 요청은 결국 중단되어 닫히는 데 약 30초가 걸렸습니다. 초기 요청이 실제로 완료되었으며 이는
DONE
이 줄에서 볼 수 있습니다.
OpenSSL과 NGINX에 몇 가지 이상한 점이 있다는 것을 알고 있습니다(예:지시어를 사용하여 TLS 1.3 ssl_ciphers
암호를 지정할 수 없습니다.), 그러나 이것이 또 다른 예인지는 확실하지 않습니다. 내가 놓친 것이 있나요?
답변1
이 답변은 만족스럽지 못하며 "증거"로 간주되기 어렵습니다. 계속해서 내 웹 서버에서 TLS 1.2를 활성화했는데 SSL Labs는 내 웹 사이트 등급을 A에서 A+로 향상시켰을 뿐만 아니라 세션 복구가 활성화되었음을 보여주었습니다. 여전히 0-RTT 활성화가 표시되지 않습니다.
TLS 1.3을 활성화한 상태에서 다른 여러 웹사이트를 테스트했습니다.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에 있다는 것입니다. 나는 이 문제가 앞으로 몇 달 안에 해결될 것이라고 확신합니다.