Shrew VPN – łączenie bez monitu o hasło

Posted by pawel in PKI, VPN

Popularny klient Shrew VPN w sytuacji gdy autentykacja tunelu odbywa się z wykorzystaniem certyfikatów, przed każdym połączeniem żąda podania hasła do klucza prywatnego użytkownika. Jest to istotny element podnoszący poziom bezpieczeństwa. W Shrew VPN w przeciwieństwie np. do TheGreenBow VPN nie ma możliwości zapamiętania tego hasła w programie.

Czasami użytkownicy chcieliby aby do nawiązania połączenia tunelowanego nie było potrzeby wpisania hasła. Dla przykładu w trybie Hybrid Mode użytkownik musi podać hasło do certyfikatu oraz poświadczenia użytkownika w bazie użytkowników (np. ActiveDirectory).

Najczęściej w przypadku autentykacji certyfikatem generujemy plik p12. Plik p12 jest kontenerem zawierającym klucz publiczny użytkownika (certyfikat), klucz prywatny użytkownika oraz klucz publiczny CA. Klucz prywatny użytkownika jest chroniony hasłem i właśnie to jest to hasło którego podania żąda Shrew VPN.

Konfiguracja klienta Shrew VPN została opisana w artykule.

Jeżeli usuniemy hasło chroniące klucz prywatny użytkownika Shrew VPN nie będzie monitował o hasło.

shrew5

Powyższy screen pokazuje jakie klucze PKI są wymagane do autentykacji. Po kolei są to:

  • Server Certificate Autority File – Certyfikat CA
  • Client Certificate File – klucz publiczny użytkownika
  • Client Private Key File – klucz prywatny użytkownika

zazwyczaj we wszystkich trzech polach wskazujemy plik p12. Robimy tak tylko dlatego, że plik p12 zawiera wszystkie potrzebne klucze. Z PKI Stormshield-a możemy wyeksportować zarówno sam certyfikat CA jak i certyfikat użytkownika (PEM) który zawiera klucz prywatny i publiczny użytkownika. Zakładam jednak, że dysponujemy plikiem p12, ostatecznie mogliśmy otrzymać taki plik ze źródła zewnętrznego.

Musimy wyodrębnić z pliku p12 poszczególne klucza a następnie usunąć hasło chroniące klucz prywatny. Do manipulacji kluczami korzystamy z oprogramowania OpenSSL. OpenSSL jest natywnym systemem crypto w Linuxie i Mac OSX ale można go zainstalować również w Windows. OpenSSL występuje również w systemie SNS, zatem poniższe operacje możemy przeprowadzić również na samym Stormshield-dzie.

Procedura

W przykładzie mamy do dyspozycji plik p12 z certyfikatem dla użytkownika (pawel_grzelewski.p12).

Krok 1

Wyodrębniamy certyfikat CA:

openssl pkcs12 -in pawel_grzelewski.p12 -out CA-Cert.pem -cacerts -nokeys

krok1

gdy wykonamy polecenie dostaniemu monit o hasło (podajemy hasło do p12), w wyniku działania komendy otrzymujemy plik CA-Cert.pem zawierający certyfikat CA.

Krok 2

Wyodrębniamy klucz publiczny (certyfikat) użytkownika:

openssl pkcs12 -in pawel_grzelewski.p12 -out pawel_grzelewski_cert.pem -clcerts -nokeys

krok2

gdy wykonamy polecenie dostaniemu monit o hasło (podajemy hasło do p12), w wyniku działania komendy otrzymujemy plik pawel_grzelewski_cert.pem zawierający klucz publiczny użytkownika.

Krok 3

Wyodrębniamy klucz prywatny użytkownika:

openssl pkcs12 -in pawel_grzelewski.p12 -out pawel_grzelewski_key.pem -nocerts

krok3gdy wykonamy polecenie dostaniemu monit o hasło (podajemy hasło do p12) a następnie prośbę o podanie hasła jakim zostanie ochroniony klucz prywatny (podajemy dowolny ciąg znaków np. 1234), w wyniku działania komendy otrzymujemy plik pawel_grzelewski_key.pem zawierający klucz prywatny użytkownika.

Krok 4

Usuwamy hasło chroniące klucz prywatny:

openssl rsa -in pawel_grzelewski_key.pem -out pawel_grzelewski_key_nopass.pem

krok4

gdy wykonamy polecenie dostaniemu monit o hasło (podajemy hasło do klucza prywatnego z kroku 3), w wyniku działania komendy otrzymujemy plik pawel_grzelewski_key_nopass.pem zawierający klucz prywatny użytkownika. Klucz prywatny nie jest chroniony hasłem.

Wyodrębnione plik wybieramy odpowiednio w konfiguracji ShrewVPN. Polecenie złożenia tunelu nie będzie skutkowało monitem o podanie hasła.

 

08 wrz 2017


Wszystkie teksty i opisy znajdujące się w domenie stormshield.edu.pl są mojego autorstwa.
Najnowszy firmware SNS: 4.5.2 (Release Note)
Najnowszy firmware SNSv3: 3.11.18 (Release Note)