OCSP Stapling – sprawdzanie ważności certyfikatów TLS bez kontaktu z CA
OCSP Stapling (Online Certificate Status Protocol Stapling) to mechanizm TLS, który pozwala serwerowi samodzielnie dostarczyć klientowi informację o aktualnym statusie certyfikatu.
Jego cel:
Sprawdzić, czy certyfikat TLS nie został unieważniony, bez konieczności pytania urzędu certyfikacji (CA) przez każdego użytkownika.
Problem: jak sprawdzić, czy certyfikat jest ważny?
Certyfikat TLS może być:
VALID
lub
REVOKED
Przykładowe powody unieważnienia:
- wyciek klucza prywatnego,
- przejęcie serwera,
- błędne wydanie certyfikatu,
- kompromitacja CA.
Klasyczne OCSP
Bez staplingu wygląda to tak:
Browser
|
|
| "Czy certyfikat jest ważny?"
|
v
Certificate Authority (CA)
|
|
v
VALID / REVOKED
Czyli każdy użytkownik kontaktuje się bezpośrednio z CA.
Problem z klasycznym OCSP
1. Prywatność
CA może zobaczyć:
User IP
+
Certificate being checked
Czyli może wiedzieć, jakie strony odwiedza użytkownik.
2. Wydajność
Wyobraźmy sobie:
10 milionów użytkowników
|
v
10 milionów zapytań do CA
To ogromne obciążenie.

3. Dostępność
Jeżeli serwer OCSP CA nie działa:
Browser
|
X
OCSP Server Down
Co zrobić?
- zablokować stronę?
- zaufać certyfikatowi?
Jak działa OCSP Stapling?
Zamiast:
Browser → CA
mamy:
Server
|
| Pobiera status certyfikatu
|
v
CA OCSP Server
Server przechowuje odpowiedź
Browser
|
v
TLS Handshake
|
v
OCSP Response
Schemat działania
Certificate Authority
|
|
OCSP Response
|
v
Web Server
|
|
TLS Handshake
|
v
Browser
Co zawiera OCSP Response?
Odpowiedź jest podpisana kryptograficznie.
Zawiera:
Certificate ID
Status:
GOOD
REVOKED
UNKNOWN
Timestamp
Expiration Time
CA Signature
TLS Handshake z OCSP Stapling
Normalny TLS:
ClientHello
|
ServerHello
|
Certificate
|
Finished
TLS + OCSP Stapling:
Client
|
ClientHello
|
Server
|
Certificate
|
OCSP Response
|
Finished
Serwer dołącza aktualną odpowiedź OCSP.
Dlaczego nazywa się „Stapling”?
Stapling oznacza:
„przypięcie”
Serwer „przypina” odpowiedź OCSP do certyfikatu podczas handshake.
Czyli:
Certificate
+
OCSP Proof
=
TLS Response
OCSP Stapling a bezpieczeństwo
Bez staplingu:
Browser
ufa CA
|
v
OCSP Query
Ze staplingiem:
Browser
|
v
Server provides signed proof
|
v
Verify CA Signature
Czy serwer może oszukać?
Nie powinien.
Dlaczego?
Ponieważ OCSP Response jest podpisana przez CA.
Serwer nie może stworzyć:
Fake:
Certificate VALID
bo nie posiada klucza CA.
OCSP Stapling i TLS 1.3
TLS 1.3 bardzo dobrze współpracuje z OCSP Stapling.
Schemat:
Certificate
+
OCSP Response
+
CertificateVerify
+
Finished
Klient sprawdza:
- certyfikat,
- podpis CA,
- OCSP Response,
- ważność czasową.
OCSP Stapling vs Certificate Transparency
To dwa różne mechanizmy.
Certificate Transparency
Pyta:
Czy ten certyfikat został publicznie zarejestrowany?
Schemat:
Certificate
|
v
CT Log
|
v
Visible?
OCSP Stapling
Pyta:
Czy ten certyfikat nadal jest ważny?
Schemat:
Certificate
|
v
OCSP Status
|
v
Valid?
Razem:
Certificate Transparency
|
v
Czy certyfikat został wydany?
+
OCSP Stapling
|
v
Czy certyfikat został unieważniony?
+
TLS 1.3
|
v
Secure HTTPS
OCSP Stapling vs CRL
Starsza metoda:
CRL (Certificate Revocation List)
CA publikuje listę:
Revoked Certificates:
cert1
cert2
cert3
Problem:
Listy są duże.
OCSP:
Query:
Is cert123 revoked?
OCSP Stapling:
Server already has answer
OCSP Must-Staple
Istnieje rozszerzenie:
TLS Feature Extension
znane jako:
OCSP Must-Staple
Informuje przeglądarkę:
Nie akceptuj tego certyfikatu bez poprawnej odpowiedzi OCSP.
Schemat:
Certificate
+
Must-Staple Flag
|
v
Browser requires OCSP
OCSP Stapling w praktyce
Przykład:
Użytkownik odwiedza:
https://example.com
Serwer wysyła:
Certificate:
example.com
OCSP Response:
GOOD
TLS Keys:
X25519
Encryption:
AES-GCM
Przeglądarka:
Certificate OK
OCSP OK
TLS OK
↓
HTTPS Connection
Konfiguracja serwera
Przykład nginx:
server {
listen 443 ssl;
ssl_certificate example.com.crt;
ssl_certificate_key example.com.key;
ssl_stapling on;
ssl_stapling_verify on;
}
OCSP Stapling i Let’s Encrypt
Certyfikaty od Let’s Encrypt wspierają OCSP.
Typowy stos HTTPS:
Let's Encrypt Certificate
|
Certificate Transparency
|
OCSP Stapling
|
TLS 1.3
|
AES-GCM / ChaCha20-Poly1305
OCSP Stapling w architekturze Zero Trust
W modelu Zero Trust:
Never Trust
Always Verify
OCSP Stapling dodaje dodatkową kontrolę:
Identity
+
Certificate
+
Revocation Status
↓
Trust Decision
OCSP Stapling i przyszłość PQC
Obecnie:
Certificate
RSA/ECDSA
|
OCSP Signature
W przyszłości:
Certificate
ML-DSA
|
Post-Quantum OCSP Proof
Mechanizm pozostaje taki sam:
- podpis,
- weryfikacja,
- zaufanie.
Zmieniają się tylko algorytmy kryptograficzne.
Pełny obraz nowoczesnego HTTPS
HTTPS SECURITY
DNSSEC
|
|
Correct DNS Answer
Certificate Transparency
|
|
Certificate Visibility
OCSP Stapling
|
|
Certificate Revocation Check
TLS 1.3
|
|
X25519 / ML-KEM
|
HKDF
|
AES-GCM / ChaCha20-Poly1305
Encrypted Communication
Najważniejsze do zapamiętania
OCSP
→ sprawdza status certyfikatu u CA
OCSP Stapling
→ serwer dostarcza podpisaną odpowiedź OCSP
SCT
→ dowód obecności certyfikatu w CT Log
TLS 1.3
→ szyfruje komunikację
Certificate Transparency
→ wykrywa nieuczciwie wydane certyfikaty
OCSP Stapling jest ważnym elementem współczesnego HTTPS. Usuwa potrzebę ciągłego kontaktu klientów z urzędami certyfikacji, poprawia prywatność, wydajność i niezawodność procesu sprawdzania certyfikatów. W połączeniu z Certificate Transparency i TLS 1.3 tworzy obecnie jeden z najważniejszych filarów bezpieczeństwa komunikacji internetowej.






