Online Certificate Status Protocol – część 1

Online Certificate Status Protocol – część 1

Online Certificate Status Protocol jest protokołem pozwalającym na sprawdzenie statusu certyfikatu. Ten wpis jest pierwszą z kilku części, w których postaram się przybliżyć zasadę jego działania.

Czas życia certyfikatu

Każdy certyfikat x509 posiada swój okres ważności. Z reguły jest to rok, dwa lub trzy lata. W tym czasie certyfikat jest uznawany za ważny. Może zdarzyć się jednak sytuacja, w której konieczne będzie jego unieważnienie. Wśród przyczyn odwołania certyfikatu wyróżnić można między innymi utratę kontroli nad kluczem prywatnym czy to, że dane zawarte w certyfikacie przestały być aktualne. Kiedy certyfikat zostaje unieważniony, informacja ta musi zostać przekazana do wszystkich użytkowników, którzy będą mieli z nim styczność. Jeżeli Twój bank unieważni certyfikat SSL (który zabezpieczał na przykład stronę logowania), to Ty – jako klient tego banku – musisz o tym wiedzieć.

Obecnie istnieją dwie metody na dostarczenie informacji o unieważnieniu. Pierwszą z nich są listy CRL (Certificate Revocation Lists), a drugą właśnie Online Certificate Status Protocol (OCSP).

Protokół OCSP

OCSP jest protokołem, w którym to klient (np. przeglądarka internetowa) wysyła zapytanie o status konkretnego certyfikatu do serwera OCSP danego Urzędu Certifikacyjnego (ang. Certificate Authority – CA). Zwrotnie otrzymuje podpisaną cyfrowo odpowiedź zawierającą właściwy status.

Uproszczony schemat działania OCSP

Uproszczony schemat działania OCSP

Zgodnie z RFC 2560 responder OCSP może zwrócić trzy statusy:

  • good,
  • revoked,
  • unknown.

Status good oznacza, że certyfikat jest ważny tj. nie został unieważniony w swoim okresie ważności. Odpowiedź zawierająca status revoked oznacza, że certyfikat został unieważniony, z włączeniem w to certyfikatów zawieszonych (certyfikat zawieszony może zostać odwieszony, czyli może stać się znowu ważny). Ostatni ze statusów, który może zostać zwrócony w odpowiedzi OCSP to unknown. Oznacza to, że responder nie wie nic o certyfikacie z żądania. Najczęściej informacja ta zwraca jest w momencie, gdy wystawca certyfikatu o który jest zapytanie nie jest obsługiwany przez dany serwer OCSP.

Adres serwera OCSP

Klient wysyłający zapytanie do serwera OCSP musi znać jego adres. Informację tę uzyskuje z certyfikatu, który jest podmiotem zapytania. Adres na który powinno kierować się zapytania o status danego certyfikatu znajduje się w jednym z jego rozszerzeń – Authority Information Access (AIA). Na język polski jest to tłumaczone jako “Dostęp do informacji o Urzędzie”. Rozszerzenie to nie jest krytyczne, a jego OID to 1.3.6.1.5.5.7.1.1. Na strukturę AIA składają się sekwencje pól accessMethod i accessLocation.

Pole accessMethod opisuje typ i format danych, jego dwie dopuszczalne wartości to:

  • id-ad-ocsp (OID: 1.3.6.1.5.5.7.48.1),
  • id-ad-caIssuers (OID: 1.3.6.1.5.5.7.48.2).

Tutaj interesuje nas pierwsza z nich, która wskazuje na możliwość zweryfikowania statusu certyfikatu z wykorzystaniem OCSP. Pole accessLocation zawiera natomiast adres pod którym znajdziemy określone dane lub usługę udostępnioną przez wystawcę certyfikatu (wskazane w accessMethod). W tym przypadku będzie to adres serwera OCSP pod który należy kierować zapytania o status danego certyfikatu.

Adres serwera OCSP w rozszerzeniu Authority Information Access

Adres serwera OCSP w rozszerzeniu Authority Information Access

Jak można zauważyć OCSP do dostarczania informacji o statusie certyfikatów wykorzystuje protokół HTTP. Sam standard dopuszcza użycie innych protokołów, ale obecnie jest to najpopularniejsza forma transportu żądań i odpowiedzi OCSP.

Które przeglądarki korzystają z OCSP?

Na koniec krótka informacja o tym, jak przedstawia się sytuacja wykorzystywania OCSP podczas weryfikacji certyfikatu SSL w pięciu najpopularniejszych przeglądarkach internetowych.

Obecnie, jedynie Chrome nie używa OCSP (zamiast tego posługuje się CRLSets). Pozostałe przeglądarki, czyli: Firefox, Internet Explorer, Opera i Safari przy weryfikowaniu statusu certyfikatów korzystają z OCSP. Warto jednak zaznaczyć, że pomiędzy tymi przeglądarkami także występują pewne różnice. Na przykład Firefox weryfikując certyfikat korzysta wyłącznie z OCSP, a IE w przypadku niedostępności serwera OCSP przechodzi do weryfikacji opartej na CRLs.

W kolejnej części przedstawię strukturę żądania i odpowiedzi OCSP.

Komentarze

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *