Zakończenie SSL i balancery
Krótkie podsumowanie
Zakończenie SSL/TLS usuwa obciążenie kryptograficzne z aplikacji i otwiera drogę do routingu L7, WAF, limit stawki, mTLS, wydania kanaryjskie. Kluczowe rozwiązania: gdzie zakończyć TLS (krawędź/ingress/wewnątrz siatki), jak zrównoważyć (L4 vs L7), które profile szyfrów do użycia, jak zaktualizować certyfikaty bez przestojów i jak zachować opóźnienie p95 i błędy w SLO.
Gdzie zakończyć TLS
Krawędź (CDN/Anycast/WAF): minimalna opóźnienie użytkownika, ochrona globalna, kontrola pamięci podręcznej/bot. Dalej - ponownie zaszyfruj do backendu.
Na ingress L7 (Nginx/Envoy/HAProxy/ALB): fine URI/header routing, mTLS, JWT validation.
End-to-end TLS (passthrough L4): kiedy końcowy mTLS jest potrzebny przed podaniem/serwisem (np. strefa ścisłej zgodności).
Usługa Mesh (Envoy/Istio/Linkerd): zautomatyzowana mTLS wewnątrz klastra, polityka i telemetria.
Praktyka: częściej - krawędź zakończyć → re-encrypt do ingress; dla PII/płatności - mTLS przed serwisem.
L4 vs L7 bilansowanie
L4 (TCP/UDP): minimalne opóźnienie, proste kontrole zdrowotne (port/TCP), passthrough TLS. Nadaje się do gRPC na TLS, gdy brakuje funkcji L7.
L7 (HTTP/HTTPS/HTTP3): host/path/header/cookie routing, WAF, rate-limits, canary releases, sticky sessions, retrays/timeouts.
TLS: wersje, klawisze, szyfry
Wersje: TLS 1. 3 wszędzie, TLS 1. 2 jako upadek. Wyłączyć 1. 0/1. 1.
Klucze/serty: ECDSA (P-256) - szybciej niż RSA; można podwójnie stosować (ECDSA + RSA) dla starożytności.
ALPN: 'h2' ва 'http/1. 1`; dla HTTP/3 - „h3” (QUIC/UDP).
OCSP zszywanie: obejmują; HSTS na domenach publicznych.
Baseny kluczowe: przechowywane w KMS/HSM; automatyczne odnowienie (ACME/drzewo zaufania).
0-RTT (TLS 1. 3): obejmują punkt (GET/idempotent), uwzględniają ryzyko powtórzenia.
Podstawowy profil szyfrowania (TLS 1. 2): „ECDHE-ECDSA-AES256-GCM-SHA384: ECDHE-ECDSA-CHACHA20-POLY1305: ECDHE-RSA-AES256-G CM-SHA384: ECDHE-RSA-CHACHA20-POLY1305”
Wydajność TLS
Wznowienie: bilety sesyjne/identyfikatory - obniżenie kosztów uścisku dłoni.
ECDSA + ChaCha20 pomoc w telefonii komórkowej/non-AES-NI.
OCSP Zszywanie + krótkie łańcuchy zmniejszyć p95.
HTTP/2/3: multipleksowanie, mniej połączeń → mniej niż p95.
Offload: pin CPU rdzenie do krypta, włączyć ponowne użycie, tune gniazdo bufory.
Bezpieczeństwo
mTLS: wymagać cert klienta dla oświadczeń administratora/API; CRL/OCSP do odwołania.
SNI/ECH: SNI - standard; ECH (Encr. KlientHello) ukrywa domenę (jeśli obsługuje ją dostawca krawędzi).
Ścisłe bezpieczeństwo transportu (HSTS): domeny produkcyjne, z zachowaniem ostrożności na początku.
TLS między chmielami: ponownie szyfrować do usługi, nawet wewnątrz DC (Zero-Trust).
Prędkość graniczna/szare-woły: na L7 chronić api przed botami/brute-force.
Obserwowalność i SLO
SLO (przykłady)
p95 TLS-uścisk dłoni ≤ 80-120 ms (globalny), p95 TTFB ≤ 200-300 ms.
Błędy TLS (uścisk dłoni/peer-verify) ≤ 0. 1%.
Odsetek wznawianych wizyt wynosi ≥ 70%.
Mierniki
'handshake _ time', 'tls _ version', 'alpn',' cert _ expiry _ days ',' ocsp _ staple _ status '.
L7: 'p50/p95/p99', '5xx', '429', 'upstream _ rq _ time', 'retry _ budget'.
Pojemność: aktywne połączenia, CPS (połączenia na sekundę), RPS.
Typowe konfiguracje
Nginx (koniec L7 + HTTP/2 + zszywanie OCSP)
nginx server {
listen 443 ssl http2 reuseport;
server_name api.example.com;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:...:ECDHE-RSA-CHACHA20-POLY1305';
ssl_ecdh_curve X25519:P-256;
ssl_certificate /etc/ssl/cert.pem; # полная цепочка ssl_certificate_key /etc/ssl/key.pem;
ssl_stapling on; ssl_stapling_verify on;
ssl_session_cache shared:SSL:50m; ssl_session_timeout 1d;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto https;
proxy_pass https://upstream_pool;
}
}
upstream upstream_pool {
zone backends 64k;
server 10.0.1.10:8443 max_fails=3 fail_timeout=10s;
server 10.0.1.11:8443 max_fails=3 fail_timeout=10s;
keepalive 256;
}
HAProxy (L7 zakończyć + lepkość + mTLS do oparcia)
haproxy frontend fe_https bind:443 ssl crt /etc/haproxy/certs/ alpn h2,http/1.1 mode http http-response set-header Strict-Transport-Security max-age=31536000 default_backend be_api
backend be_api mode http balance roundrobin cookie SRV insert indirect nocache option httpchk GET /healthz server s1 10.0.1.10:8443 check ssl verify required ca-file /etc/haproxy/ca.pem server s2 10.0.1.11:8443 check ssl verify required ca-file /etc/haproxy/ca.pem
Wysłannik (L7 zakończyć + mTLS od klienta + kanarka)
yaml static_resources:
listeners:
- name: https address: { socket_address: { address: 0.0.0.0, port_value: 443 } }
filter_chains:
- filters:
- name: envoy.filters.network.http_connection_manager typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager stat_prefix: ingress route_config:
virtual_hosts:
- name: api domains: ["api.example.com"]
routes:
- match: { prefix: "/" }
route:
weighted_clusters:
clusters:
- name: api-stable weight: 95
- name: api-canary weight: 5 http_filters:
- name: envoy.filters.http.router transport_socket:
name: envoy.transport_sockets.tls typed_config:
"@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.DownstreamTlsContext common_tls_context:
tls_certificates:
- certificate_chain: { filename: "/etc/tls/cert.pem" }
private_key: { filename: "/etc/tls/key.pem" }
validation_context: # mTLS (опционально)
trusted_ca: { filename: "/etc/tls/ca.pem" }
require_client_certificate: true
AWS ALB/NLB (koncepcja)
ALB (koniec L7): słuchacz HTTPS 443 (TLS 1. 2/1. 3), HTTPs:8443 grupy docelowej, kontrola zdrowia „/healthz ”, lepkość (ciasteczko).
NLB (L4 passthrough): słuchacz TLS 443, kontrola zdrowia TCP, end-to-end SNI do pod.
CloudFront/Cloudflare: krawędź TLS + zarządzanie WAF + Bot; pochodzenie - tylko HTTPS.
Aktualizacja certyfikatów bez przestojów
ACME (Let's Encrypt/Private CA) z automatyczną aktualizacją i gorącym ponownym uruchomieniem (Nginx 'reload', Envoy SDS).
Podwójne certyfikaty (ECDSA + RSA) dla migracji.
monitorowanie łańcucha: sprawdzanie pośrednich CA; Zszywanie OCSP po obrocie.
Wpisy: 'cert _ expiry _ days <21' i 'ocsp _ status! = good'.
Kontrole zdrowotne i przebieg trasy
L4: połączenie TCP, uścisk dłoni TLS.
L7: wersja HTTP 200/JSON token, zdrowie gRPC.
Politycy: awaryjne, ważone, opóźnienia, consistent-hash (cookie/IP) dla lepkich.
Przekaźniki/timeouts: równowaga między trwałością a duplikatem żądań (idempotencja!).
Wzory kubernetów
Ingress Controller (Nginx/Envoy/HAProxy): zakończenie ingress, 'ЧDNS' dla rekordów DNS, 'cert-manager' dla ACME.
Gateway API: deklaratywny TLЬoute/HTTPRoute z kanarami.
Siatka serwisowa: automatyczna mTLS podczółek, zasady na poziomie „PeerAuthentication ”/„ ΔRule”.
Lista kontrolna bezpieczeństwa
- TLS 1. 3 włącznie; 1. 0/1. 1 są wyłączone.
- Nowoczesne szyfry; ECDSA serts gdzie wsparcie pozwala.
- zszywanie OCSP, kompletne łańcuchy, HSTS.
- mTLS dla administratorów/interkonektów; odwołanie serc klienta.
- Wartości graniczne/filtry bot na krawędzi; ochrona przed slowloris/oversized headers.
- Re-encrypt to backends (Zero-Trust).
- Sekrety/klucze w KMS/HSM; audyt rotacyjny i emisyjny.
Obserwowalność i wpisy
Метрика: TLS handshakes/sec, failure rate, session resumption rate, OCSP, p95/99, open conns, CPS, RPS.
Dzienniki: wersja SNI/ALPN/TLS, szyfr, certyfikat klienta (dla mTLS), kody upstream, podział opóźnień.
Wpisy: wzrost „5xx/525”, wznowienie spadku, „cert _ expiry _ days”, „ocsp _ failed”, nadmiar p95, kolce „429”.
Częste błędy
Zakończenie na krawędzi i zwykły HTTP wewnątrz bez ochrony.
Zbyt długie łańcuchy CA → wzrost uścisku dłoni p95.
Brak zszywania OCSP → blokowanie na klientach/przeglądarkach.
Sesje lepkie bez uwzględnienia awarii → „przyklejanie” na zdegradowanym węźle.
0-RTT umożliwiają modyfikację żądań → ryzyko ponownego złożenia wniosku.
Brak serii hot-reload → drugie spadki podczas obrotu.
Specyfika dla iGaming/fintech
Szczyty (turnieje/mecze): rozgrzewanie sesji TLS (pre-connect), krótkie łańcuchy, wysoki odsetek wznowienia, HTTP/2/3 na fronty.
Bramki płatności/PSP: mTLS, rygorystyczne szyfry/wersje, cienki urząd certyfikacji, poszczególne domeny/ALB z surowymi zasadami.
Filtry antyfraud/bot: L7-rate-limit przez IP/ASN/device-fingerprint, kanaryjski szary wół (challenge/captcha) w osobnej domenie.
Regulacja: HSTS, kontrolowane dzienniki TLS, raporty wersji, przypomnienie serii klientów za incydenty.
Mini playbooks
Uwolnienie kanaryjskie za pośrednictwem L7 balancer
1. Dodać klaster „api-canary” o wadze 5%; 2) zegarek na p95/błędy; 3) 5→25→50→100%; 4) automatyczne skracanie podczas degradacji.
Rotacja certyfikatu awaryjnego
1. Pobierz nowy cert/key; 2) „przeładowanie” bez zrzucania połączeń (SDS/hot swap); 3) kontrola OCSP; 4) deska rozdzielcza p95 uścisk dłoni.
Włączanie HTTP/3
1. Otwórz UDP/443; 2) dodać ALPN 'h3'; 3) indywidualne straty QUIC/metryki RTT; 4) A/B według udziału klienta.
Wynik
Skuteczne zakończenie SSL to nowoczesny profil TLS, odpowiednia lokalizacja zakończenia, inteligentne routing L7, obserwowalność i silne bezpieczeństwo (mTLS, HSTS, re-encrypt). Zablokuj wszystko w IaC, zautomatyzuj obroty, zmierz p95/błędy i użyj kanarów - w ten sposób przód przetrwa szczyty i będzie przewidywalnie szybki i bezpieczny.