SSL терминациясы мен теңгерімдегіштері
Қысқаша түйіндеме
SSL/TLS-терминация қосымшалардан крипто-жүктемені алып тастайды және L7-маршруттауға, WAF, rate-limit, mTLS, канареялық релиздерге жол ашады. Түйінді шешімдер: TLS-ті (edge/ingress/mesh ішінде) қайда аяқтау керек, қалай теңгеруге болады (L4 vs L7), қандай шифр профильдерін пайдалану керек, сертификаттарды түбіртексіз қалай жаңарту керек және SLO-да құпиялылық пен қателерді қалай сақтау керек.
TLS қай жерде аяқталады
Шетінде (CDN/Anycast/WAF): пайдаланушыға ең төменгі жасырындылық, жаһандық қорғаныс, кэш/бот-бақылау. Одан әрі - бэкендке дейін re-encrypt.
Ingress L7 (Nginx/Envoy/HAProxy/ALB): URI/тақырыптар бойынша жіңішке бағыттау, mTLS, JWT-валидация.
Өтпелі TLS (passthrough L4): end-to-end mTLS pod/service (мысалы, қатаң комплаенс-аймақ) қажет болғанда.
Service Mesh (Envoy/Istio/Linkerd): кластер, саясат және телеметрия ішіндегі автоматтандырылған mTLS.
Практика: көбінесе - edge terminate → re-encrypt ingress; PII/төлемдер үшін - сервиске дейін mTLS.
L4 vs L7 теңгерімі
L4 (TCP/UDP): ең аз кідіріс, қарапайым health-checks (порт/ТСР), passthrough TLS. L7-фич жетіспеген жағдайда TLS-де gRPC үшін жарамды.
L7 (HTTP/HTTPS/HTTP3): хост/жол/тақырып/cookies, WAF, rate-limits, канареялық релиздер, sticky-сессиялар, ретраилер/таймауттар бойынша бағыттау.
TLS: нұсқалар, кілттер, шифрлар
Нұсқалары: TLS 1. 3 барлық жерде, TLS 1. 2 fallback ретінде. 1 дегенді өшіріңіз. 0/1. 1.
Кілттер/серттер: ECDSA (P-256) - RSA-дан жылдам; ескі үшін қос-стек (ECDSA + RSA) болады.
ALPN: `h2` и `http/1. 1`; HTTP/3 үшін - 'h3' (QUIC/UDP).
OCSP Stapling: қосу; HSTS ашық домендерде.
Кілт пулдары: KMS/HSM-де сақтау; автоматты түрде ұзарту (АСМЕ/сенім ағашы).
0-RTT (TLS 1. 3): нүктелі (GET/іспеттес) қосу, replay тәуекелін ескеру.
Негізгі шифр профилі (TLS 1. 2): `ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-CHACHA20-POLY1305`
TLS өнімділігі
Resumption: session tickets/IDs - handshake құнын төмендетеді.
ECDSA + ChaCha20 мобильді/AES-NI-сіз көмектеседі.
OCSP Stapling + қысқа тізбектер p95 азайтады.
HTTP/2/3: мультиплексиялау, аз қосылыстар → p95 төмен.
Offload: pin CPU-ядролар crypto астында, reuseport, tune socket-буферлер қосу.
Қауіпсіздік
mTLS: әкімшілер/операторлардың API үшін client-cert талап етіңіз; CRL/OCSP кері шақыру үшін.
SNI/ECH: SNI - стандарт; ECH (Encr. ClientHello) доменін жасырады (егер edge-провайдер қолдаса).
Strict Transport Security (HSTS): прод-домендер, басында сақтықпен.
TLS hop-тар арасында: service дейін re-encrypt, тіпті DC (Zero-Trust) ішінде.
Rate-limit/грей-бұтақтар: L7-де апи боттан/брутфорстан қорғайды.
Бақылау және SLO
SLO (мысалдар)
p95 TLS-handshake ≤ 80-120 мс (жаһандық), p95 TTFB ≤ 200-300 мс.
TLS (handshake/peer-verify) қателері ≤ 0. 1%.
Резюмпшендердің үлесі қайта келу үшін 70% ≥.
Өлшемдер
`handshake_time`, `tls_version`, `alpn`, `cert_expiry_days`, `ocsp_staple_status`.
L7: `p50/p95/p99`, `5xx`, `429`, `upstream_rq_time`, `retry_budget`.
Capacity: белсенді коннектілер, CPS (connections per second), RPS.
Типтік конфигалар
Nginx (L7 terminate + HTTP/2 + OCSP stapling)
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 terminate + stickiness + mTLS бэкендке)
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
Envoy (L7 terminate + mTLS клиенттен + канарейка)
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 (тұжырымдама)
ALB (L7 terminate): HTTPS listener 443 (TLS 1. 2/1. 3), target group HTTPs:8443, health-check `/healthz`, stickiness (cookie).
NLB (L4 passthrough): TLS listener 443, TCP health-checks, өтпелі SNI pod дейін.
CloudFront/Cloudflare: TLS edge + WAF + Bot-менеджмент; origin — HTTPS only.
Куәліктерді түбіртексіз жаңарту
Автоматты жаңартумен және ыстық қайта іске қосумен ACME (Let's Encrypt/жеке CA) (Nginx 'reload', Envoy SDS).
Көші-қон кезінде қосарланған сертификаттар (ECDSA + RSA).
Тізбектерді бақылау: аралық СА тексеру; OCSP айналымнан кейін stapling.
Алерттар: 'cert _ expiry _ days <21' және 'ocsp _ status! = good'.
Health-checks және бағыттау
L4: TCP connect, TLS handshake.
L7: HTTP 200/JSON-маркер нұсқасы, gRPC health.
Саясаттар: failover, weighted, latency, consistent-hash (cookie/IP) үшін sticky.
Ретраи/таймауттар: тұрақтылық пен сұрау көшірмелері арасындағы теңгерім (теңсіздік!).
Kubernetes үлгілері
Ingress Controller (Nginx/Envoy/HAProxy): ингрестегі терминация, DNS жазбалары үшін 'ExternalDNS', ACME үшін 'cert-manager'.
Gateway API: TLSRoute/HTTPRoute канарейкалары бар декларативті.
Service Mesh: 'PeerAuthentication '/' DestinationRule' деңгейіндегі автоматты mTLS pod pod саясаты.
Қауіпсіздік шегі
- TLS 1. 3 қосылған; 1. 0/1. 1 өшірілді.
- Заманауи шифрлар; ECDSA-серверлер қолдау мүмкіндік беретін жерде.
- OCSP stapling, толық тізбектері, HSTS.
- әкімшілерге/интерконнектілерге арналған mTLS; клиенттік сертификаттарды ревокациялау.
- Шетіндегі Rate-limit/бот-сүзгілер; slowloris/oversized headers.
- Re-encrypt (Zero-Trust).
- KMS/HSM құпиялары/кілттері; ротация және беру аудиті.
Бақылау және аллергия
Метрики: TLS handshakes/sec, failure rate, session resumption rate, OCSP, p95/99, open conns, CPS, RPS.
Логи: SNI/ALPN/TLS нұсқасы, cipher, клиент сертификаты (mTLS үшін), upstream кодтары, latency breakdown.
Алерталар: '5xx/525' өсуі, resumption құлдырауы, 'cert _ expiry _ days', 'ocsp _ failed', p95 асып кетуі, '429' жарылысы.
Типтік қателер
Шетіндегі терминация және қорғаусыз ішке plain HTTP.
Өте ұзын тізбектер CA → өсу p95 handshake.
Клиенттер/браузерлерде OCSP stapling → бұғаттаудың болмауы.
Sticky-сессиялар failover → Деградацияланған торапта «жабысқақ».
0-RTT өзгертетін сұраулар үшін қосылған
Ротация кезінде hot-reload сертификаттарының → секундтық дроптардың болмауы.
iGaming/финтех ерекшелігі
Шыңдар (турнирлер/матчтар): TLS-сессияларды жылыту (pre-connect), қысқа тізбектер, жоғары resumption үлесі, фронттар үшін HTTP/2/3.
Төлем шлюздері/PSP: mTLS, қатаң ciphers/нұсқалары, pinned CA, қатаң ережелері бар жеке домендер/ALB.
Антифрод/бот-сүзгілер: IP/ASN/device-fingerprint бойынша L7-rate-limit, жеке доменде канареялық грей-волдар (челлендж/капча).
Реттеуіш: HSTS, аудиттелетін TLS-параметрлер журналдары, нұсқалар бойынша есептер, инциденттер бойынша клиент сертификаттарын кері қайтару.
Шағын ойнатқыштар
L7-теңгеруші арқылы канареялық босату
1. 5% салмағы бар 'api-canary' кластерін қосыңыз; 2) р95/қателерді қадағалаңыз; 3) 5→25→50→100%; 4) деградация кезінде автоқайыру.
Сертификатты шұғыл ауыстыру
1. Жаңа cert/key бағдарламасын қотарыңыз; 2) коннектілердің құлауынсыз 'reload' (SDS/ыстық ауыстыру); 3) OCSP тексеру; 4) дашборд p95 handshake.
HTTP/3 қосу
1. UDP/443 ашыңыз; 2) ALPN 'h3' қосыңыз; 3) QUIC loss/RTT жеке өлшемдері; 4) клиенттердің үлесі бойынша A/B.
Жиынтық
Тиімді SSL терминациясы - бұл заманауи TLS профилі, дұрыс аяқтау орны, ақылды L7 маршруты, бақылау және қатаң қауіпсіздік (mTLS, HSTS, re-encrypt). IaC-те барлығын жазыңыз, ротацияларды автоматтандырыңыз, p95/қателерді өлшеңіз және канареяларды пайдаланыңыз - осылай фронт шыңдардан аман қалады және болжамды жылдам және қауіпсіз болады.