VPN i Linux I


Certyfikat bramy

VPN i Linux I

Jeszcze raz - tym razem wystawiamy certyfikat dla bramy bezpieczeństwa.

Generowanie certyfikatu bramy przebiega bardzo podobnie do wystawiania certyfikatu Root CA. Posłuży on nam do tego, by nasi roadwarriors mieli w stosownym czasie pewność, że kontaktują się z właściwą bramą bezpieczeństwa.

Najpierw należy przygotować klucz prywatny, tym razem o długości 1024 bitów:

openssl genrsa -des3 -out private/gwKey.pem 1024

Ustanawiamy przy tym własne hasło dla bramy. Kolejno sporządzamy wniosek o wydanie certyfikatu do Root CA:

openssl req -new -key private/gwKey.pem -out gwReq.pem

Potwierdzamy wniosek za pomocą hasła bramy i ignorujemy pytania o extra attributes.

Teraz podpisujemy wniosek jako Root CA:

openssl ca -notext -in gwReq.pem -out gwCert.pem

W tym celu podajemy na żądanie hasło Root CA. Nasz właśnie uzyskany certyfikat musimy jeszcze zapisać w formie dwójkowej, zrozumiałej dla bramy, jako /etc/x509cert.der. W tym celu przekształcamy certyfikat poleceniem:

openssl x509 -in gwCwert.pem -outform der -out /etc/x509cert.der

Klucz prywatny gwKey.perm do Free S/WAN kopiujemy do /etc/ipsec.d/ private. Poza tym odpowiednie hasło musi zostać zapisane w postaci tekstowej w pliku /etc/ipsec.secrets. Jeżeli hasło brzmi na przykład "einfallslosePassphrase", wpisujemy tam następujący wiersz:

: RSA gwKey.pem "einfallslosePassphrase"

Jest oczywiste, że dostęp do ipsec.secrets może mieć tylko administrator (root).

Teraz należy uzupełnić ostatnią lukę w pliku /etc/ipsec.conf, podając nazwę właściciela certyfikatu bramy. Wpisujemy tam pełną nazwę jako leftid w sekcji conn %default. W naszym przykładzie odpowiedni wiersz brzmi:

leftid="C=DE, ST=Bavaria, L=Munich, O=IDG Interactive GmbH,OU=tecCHANNEL, CN=fenrisGW, [email protected]"

Certyfikaty użytkowników

Teraz należy powtórzyć procedurę wystawiania certyfikatów dla każdego z użytkowników:

Przy tworzeniu prywatnego klucza dla użytkownika:

openssl genrsa -des3 -out private/userKey.pem 1024

przydzielamy każdemu użytkownikowi własne hasło. Posługując się tym hasłem, sporządzamy wniosek o wydanie certyfikatu:

openssl req -new -key private/userKey.pem -out userReq.pem

Zgodnie z ustawieniami openssl.cnf, będzie on ważny 365 dni.

Teraz wystawimy certyfikat, który podpiszemy jako Root CA. Ze względów praktycznych jego ważność ograniczymy za pomocą -enddate do bieżącego kwartału:

openssl ca -notext -enddate 0209301200Z -in userReq.pem -out userCert.pem

W ten sposób unikniemy unieważnienia certyfikatu na koniec kwartału, kiedy to można liczyć się z fluktuacją personelu. Niezależnie od tego, regularne odnawianie certyfikatów wpływa pozytywnie na poziom bezpieczeństwa. Z tego certyfikatu utworzymy na ostatnim etapie wersję dwójkową w formacie PKCS#12, której będziemy potrzebować w następnym rozdziale do współpracy z klientem Windows 2000/XP:

openssl pkcs12 -export -in userCert.pem -inkey private/userKey.pem -certfile caCert.pem -out user.p12

Lista certyfikatów unieważnionych

Nawet przy ograniczeniu terminu ważności certyfikatów nie da się uniknąć w pewnych okolicznościach unieważnienia wystawionego certyfikatu. Potrzebna jest do tego lista certyfikatów unieważnionych (Certificate Revocation List CRL), którą trzeba aktualizować w regularnych odstępach czasu. Odstęp czasu wspisujemy do openssl.cnf za pomocą default_crl_days, przy czym wartość domyślna wynosi 30 dni.

CRL generujemy jako Root CA za pomocą:

openssl ca -gencrl -out crl/crl.pem

przy czym ograniczamy ręcznie czas parametrów opcjonalnych -crldays i -crlhours do kilku dni, czy wręcz godzin.

Na koniec kopiujemy crl.pem do /etc/ipsec.d/crls. Blokada certyfikatu następuje poprzez wywołanie:

openssl ca -revoke userCert.pem

Powoduje to zaznaczenie odpowiedniego certyfikatu w index.txt jako nieważnego, jakkolwiek skutek jest widoczny dopiero przy następnej aktualizacji CRL.

Jeżeli CRL ma być publicznie dostępna na serwerze, należy przekonwertować ją na format dwójkowy DER:

openssl -crl -in crl/crl.pem -outform der -out crl/cert.crl

Perspektywy

W ten sposób szczęśliwie przebrnęliśmy przez konfigurację bramy bezpieczeństwa. W następnym rozdziale zajmiemy się konfiguracją odpowiedniego klienta VPN do Windows. Potrzebne będą do tego narzędzia systemowe Windows 2000 i XP, jak również specjalne oprogramowanie klienckie VPN, np. bezpłatny dla osób prywatnych program PGP.net (http://web.mit.edu/network/pgp.html ).