CRL -
Certificate Revocation List– Na początku trochę więcej informacji, czym właściwie jest CRL:)
– Lista CRL gromadzi dane o certyfikatach, które uległy odwołaniu. Odwołanie certyfikatu następuje z różnych przyczyn – zwykle na wniosek właściciela certyfikatu, choć w niektórych przypadkach odwołanie certyfikatu może nastąpić na wniosek Urzędu Certyfikacji
– CRL = Certificate Revocation List = Lista unieważnionych certyfikatów – Mogą być pomocne przy wykryciu nieważności certyfikatu
– CRL służą do poinformowania użytkowników, które z certyfikatów nie mogą być uznane dłużej za zaufane, np. z powodu kompromitacji klucza prywatnego
– Aby móc korzystać z list CRL, na początku należy taką listę wygenerować.
– Po wygenerowaniu stworzona lista CRL będzie pusta (ponieważ nie unieważniliśmy jeszcze żadnego certyfikatu)
– Tworzenie pustej listy CRL odbywa się za pomocą polecenia:
openssl ca -config CA.config -gencrl -keyfile privkey.pem -cert CA.cert -out crl.pem
– Powyższe polecenie wygeneruje listę nieważnych certyfikatów - będzie ona pusta
– Do wygenerowania takiej listy potrzebujemy klucza prywatnego naszego CA, czyli privkey.pem
– Powstanie plik crl.pem, który będzie naszą listą unieważnionych certyfikatów Niekiedy zachodzi potrzeba unieważnienia wystawionego wcześniej certyfikatu. Może się tak stać z różnych przyczyn:
• kompromitacja samego centrum. Jest to fatalna sprawa, ponieważ zniszczeniu ulega cała PKI. Należy unieważnić wszystkie wydane certyfikaty,ponieważ napastnik, mając klucz prywatny centrum, jest w stanie sam sobie wystawić dowolny certyfikat. Ponieważ właściwie powinna przestać działać cała
infrastruktura (przynajmniej w dotychczasowym kształcie), tak naprawdę trudno jest mówić o unieważnianiu konkretnych certyfikatów,
• utrata zaufania do podmiotu certyfikowanego. Jeżeli zauważy się, że jednostka taka przejawia niepożądaną aktywność przy pomocy uwierzytelnionego przez CA certyfikatu, należy czym prędzej go unieważnić w celu wymuszenia zaprzestania takiej działalności,
• certyfikat jest nie jest do niczego potrzebny, np. został wygenerowany na potrzeby testów lub podmiot go posiadający nie będzie już wykonywać żadnych zadań w ramach danej PKI. Nieużywane certyfikaty mogłyby natomiast zostać w jakiś sposób wykradzione (lub użyte niezgodnie z przeznaczeniem, np. przez zwolnionego pracownika) i posłużyć do niecnych celów
• Należy wspomnieć, że nie trzeba unieważniać certyfikatów w przypadku
przekroczenia ich terminów ważności. Odpowiednio napisane oprogramowanie powinno, mając do czynienia z takim certyfikatem, automatycznie wygenerować błąd
• Unieważnienie certyfikatu zyskujemy dzięki wydaniu polecenia openssl ca z parametrem –revoke, po którym następuje nazwa pliku zawierającego certyfikat do unieważnienia. Czynność ta wymaga podania hasła do klucza prywatnego CA.
Skutkuje również uaktualnieniem informacji wewnętrznych (zmieniony jest status certyfikatu w pliku index.txt)
1. Generujemy 3 certyfikaty, kasiulaCert.pem, charlieCert.pem, coreyCert.pem :
2. Tworzymy pustą listę CRL :
openssl ca -config CA.config -gencrl -keyfile privkey.pem -cert CA.cert -out crl.pem
3. Unieważniamy certyfikat Corey'a, coreyCert.pem :
openssl ca -config CA.config -revoke coreyCert.pem -keyfile privkey.pem -cert CA.cert
4. Podglądamy listę CRL, widzimy, że znajduje się na niej przed chwilą unieważniony certyfikat z numerem seryjnym 02 – czyli certyfikat Corey'a :
– Zawartość samego certyfikatu po unieważnieniu nie jest zmieniana. Nie ma to sensu, ponieważ nie wiadomo w ilu kopiach i gdzie krąży on po sieci lokalnej bądź publicznej
– Trzeba zatem uciec się do specjalnych środków :D Zastosowanie znajdują tutaj właśnie listy CRL (Certificate Revocation List)
– Do centrum certyfikacyjnego należy odpowiednie ich przygotowanie oraz publikacja, a do użytkowników danej PKI – zatroszczenie się o posiadanie aktualnej wersji
– PKI - jest skrótem od angielskiego terminu Public Key Infrastructure i oznacza całą infrastrukturę informatyczną, prawną i administracyjną służącą
kryptograficznemu potwierdzaniu tożsamości osób, danych, znakowania czasem – Znacznik czasu jest dodatkowym atrybutem dodawanym do podpisu
elektronicznego – zawierającym informację o czasie jego wystawienia. Ponieważ dane o czasie używane podczas znakowania czasem są pobierane z serwera znacznika czasu i są potwierdzane przez niezależny urząd certyfikacji, to znacznik czasu jest bardzo pewnym i niezwykle trudnym do sfałszowania potwierdzeniem istnienia dokumentu w określonej chwili. Znakowanie czasem dokonywane jest podczas podpisywania cyfrowego dokumentu i wymaga aktywnego połączenie z Internete
– Oczywiście można tak przygotować pisane oprogramowanie, aby wymusić na jego użytkownikach posiadanie zawsze aktualnych list CRL. Umożliwia to także biblioteka OpenSSL
– Listę CRL generuje się przy pomocy opcji –gencrl polecenia openssl ca. Można podać standardowy dodatkowy parametr –out określający plik
wynikowy z listą. Wymagane jest podanie hasła do klucza prywatnego CA w celu podpisania listy
– Niemal równie proste jest wyświetlenie zawartości listy CRL. Warto zauważyć, że tym razem korzystamy z polecenia crl narzędzia openssl. Polecenie crl, jak łatwo się domyślić, służy do zarządzania listami CRL (ale nie do ich tworzenia, które leży w gestii polecenia ca). Parametr –in określa plik źródłowy z listą, natomiast –text oraz –noout standardowo powodują wyświetlenie zawartości listy w formacie tekstowym tylko na standardowym wyjściu
– Dane wynikowe zawierają m.in. nazwę wyróżniającą wystawcy listy CRL, ostatnią i następną datę aktualizacji listy oraz listę unieważnionych certyfikatów