Używam nginx i chcę wdrożyć wznawianie sesji SSL. Jak powinniśmy przetestować, czy działa?
Włączyłem te ustawienia:
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
Nie jestem pewien, jak można przetestować lokalnie, ale jeśli Twoja witryna jest publiczna, ssllabs zapewnia dobre narzędzie do testowania:
Możesz użyć openssl do testowania lokalnego:
openssl s_client -connect example.com:443 -reconnect -no_ticket
Lub:
openssl s_client -connect example.com:443 -no_ticket -sess_out /tmp/ssl_s
openssl s_client -connect example.com:443 -no_ticket -sess_in /tmp/ssl_s
(The -no_ticket
opcja jest potrzebna, aby wyłączyć biletów sesji TLS po stronie klienta , które umożliwiają także wznowienie sesji, ale jest inne ustawienie w nginx
, i ograniczają test na stronie serwera sesji SSL buforowanie kontroli konfiguracji PO Użytkownika).
Dla pierwszego polecenia otrzymasz wynik w następujący sposób:
drop connection and then reconnect
CONNECTED(00000003)
---
Reused, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256
W ostatnim przypadku otrzymasz to w przypadku wznowienia sesji:
SSL handshake has read 142 bytes and written 583 bytes
---
Reused, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256
lub to w przypadku awarii:
SSL handshake has read 5855 bytes and written 722 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-GCM-SHA384
Widać, że uścisk dłoni jest znacznie większy, gdy jest nowy.