Zadanie 17: Projekt metod współpracy usługi LDAP z infrastrukturą kluczy publicznych (PKI) | ||
---|---|---|
Poprzedni |
Aby spełnić wymagania opisane w scenariuszach potrzebne są prace w następującym zakresie:
modyfikacja interfejsu www bazy LDAP w celu wyświetlania informacji o certyfikatach w sposób pełny i jednoznaczny (scenariusz 4)
modyfikacja narzędzi PKI aby uwzględniały wstawianie Certyfikatu do bazy LDAP po jego wydaniu (scenariusz 1 punkt 4)
stworzenie narzędzia do automatycznej aktualizacji certyfikatów publikowanych w bazie LDAP (scenariusz 3, 2)
Ogólne założenia projektowe:
Do przechowywania w LDAP informacji o certyfikatach użytkownika zastosowano klasę obiektów inetOrgPerson. Certyfikaty składowane są tam jako wartości atrybutu userCertificate ze schematu Core:
attributetype ( 2.5.4.36 NAME 'userCertificate'
DESC 'RFC2256: X.509 user certificate, use ;binary'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.8 )
Certyfikaty użytkownika przekazywane są do LDAP w formacie binarnym der
W bazie LDAP przechowywane są certyfikaty wydawane przez EuroPKI. W przypadku wstawienia do bazy certyfikatu podpisanego przez inne CA (ang. Certificate Authority) jego ważność będzie nieweryfikowalna.
Stan w jakim może znajdować się certyfikat przechowywany w bazie LDAP (ze względu na ważność): ważny, poza terminem ważności (nie nabrał ważności lub stracił ważność), unieważniony przez EuroPKI, nieokreślony (nie można zweryfikować ważności certyfikatu).
Dla potrzeb Polskiego Centrum Certyfikacji EuroPKI zastanie stworzone oddzielne drzewo o=EuroPKI,C=PL (planowana nazwa serwisu ldap.europki.pl) , w którym będą przechowywane:
Certyfikat Polskiego Centrum Certyfikacji EuroPKI, obecnie przechowywany w klasie certificationAuthority:
objectclass ( 2.5.6.16 NAME 'certificationAuthority'
DESC 'RFC2256: a certificate authority'
SUP top AUXILIARY
MUST ( authorityRevocationList $ certificateRevocationList $
cACertificate ) MAY crossCertificatePair )
bieżąca lista unieważnionych CRL certyfikatów w atrybutach authorityRevocationList, certificateRevocationList klasy certificationAuthority
certyfikaty podrzednych urzędów certyfikacji wraz z bieżącą listą unieważnionych certyfikatów CRL przechowywane w klasie jak wyżej
docelowo certyfikaty CA będą przechowywane w nowocześniejszej klasie pkiCA, jak zostało to opisane w raporcie "Projekt schematu bazy (klasy obiektów, atrybuty) dla potrzeb ogólnopolskiej usługi LDAP:zdefiniowanie dodatkowych klas obiektów i atrybutów wymaganych przez projekt IST NASTEC"
drzewo o=EuroPKI,C=PL ma zostać wykorzystane jako źródło informacji dla Online Certificate Status Protocoll (OCSP).
Interfejs WWW zostanie rozszerzony o dwie dodatkowe funkcjonalności:
Wyświetlanie listy WAŻNYCH certyfikatów dla każego adresu email danego użytkownika
Wyświetlanie listy WSZYSTKICH certyfikatów danego użytkownika
Założenia ad.1:
ważność certyfikatów użytkownika dla każdego adresu email jest weryfikowana przed wyświetleniem rekordu danych użytkownika (funkcje openssl)
wyświetlane są tylko ważne certyfikaty dla każdego adresu email użytkownika
Założenia ad.2:
Lista wszystkich certyfikatów uporządkowana jest według terminów wydania certyfikatów.
Dla każdego certyfikatu podany jest adres email, dla którego wydany został certyfikat.
Wyświetlany jest numer seryjny każdego certyfikatu (ang. Serial Number), pozwala on na jednoznaczną identyfikację certyfikatu użytkownika, co może być przydatne w przypadku zgłaszania ewentualnych problemów do Centrum Certyfikacji.
wyświetlany jest termin nabrania ważności i termin utraty ważności każdego certyfikatu, aby wiadomo było w jakim okresie można certyfikatu używać oraz aby właściciel certyfikatu mógł odpowiednio wcześnie zgłosić do Centrum Certyfikacji chęć odnowienia certyfikatu.
Symbole certyfikatów:
Przewiduje się, ze certyfikaty prezentowane będą w formie graficznej, co ułatwi użytkownikowi szybką ocenę stanu ważności każdego z nich.
Powinna istnieć możliwość szybkiego pobrania certyfikatu przez przeglądarkę za pomocą kliknięcia w wybrany symbol.
Przeglądarka powinna natomiast rozpoznawać pobierane dane jako dane certyfikatu.
Tabela 1. symbole certyfikatów
ważny | nie można zweryfikować ważności | poza okresem ważności lub unieważniony przez EuroPKI |
W celu osiągnięcia zamierzonej funkcjonalności istniejący interfejs WWW (utworzony w PHP) zostanie rozszerzony o poniższe funkcje:
pobierającą certyfikaty z bazy LDAP i przetwarzającą je na wewnętrzny format base64
pobierającą wybrane informacje z certyfikatu (takie jak data ważności czy adres e-mail)
weryfikującą ważność certyfikatu
wyśwetlającą certyfikat z możliwością pobrania go do przeglądarki
Ad. 1:
Certyfikaty w bazie LDAP przechowywane są w formacie binarnym, dlatego do ich pobrania konieczne będzie wykorzystanie odrębnych funkcji php. Dane będą też przekazywane w parametrach GET protokołu HTTP, dlatego celowa wydaje się konwersja tych danych do formatu base64.
Ad. 2:
Dane takie jak adres e-mail, numer seryjny lub data ważności są zakodowane w certyfikacie protokołem X509 i mogą zostać odczytane za pomocą odpowiednich funkcji openssl. Pewnych funkcji obsługi certyfikatów dostarcza php-openssl, lecz jest to jeszcze produkt niestabilny i wciąż ma duże braki. Alternatywę stanowią wywołania systemowe komend openssl z odpowiednimi parametrami.
Ad. 3:
Podobnie jak w przypadku funkcji X509, również weryfikacja certyfikatu musi odbywać się z wykorzystaniem wywołań komend systemu operacyjnego. Dodatkowo przewiduje się sprawdzenie, czy numer seryjny certyfikatu nie widnieje na liście cofniętych certyfikatów (CRL) - w takim bowiem przypadku certyfikat zostanie uznany za nieważny.
Ad. 4:
Funkcje wyświetlające certyfikat korzystać będą z opisanych w punkcie 3 metod weryfikacji w celu pobrania odpowiedniego symbolu.
Poprzedni | Spis treści | |
Scenariusze |