Aby wrócić do pierwszej części tutorialu – Jak skonfigurować serwer OpenVPN na Debian 8? – część 1.
Krok #6 – Generowanie certyfikatu i klucza dla serwera
W tym kroku będziemy instalować i uruchamiać nasz serwer OpenVPN.
Po pierwsze, nadal pracujemy z /etc/openvpn/easy-rsa, utwórz swój klucz z nazwą serwera. To było ustalone wcześniej jak KEY_NAME
w pliku konfiguracyjnym. Wartością domyślną tego tutorialu jest server.
./build-key-server server
Znowu musisz potwierdzić Distinguished Name. Naciśnij ENTER, aby zaakceptować zdefiniowane wartości domyślne. Tym razem pojawią się dwa dodatkowe monity.
Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
Obie powinny być puste, więc wystarczy nacisnąć klawisz ENTER, aby przejść przez każdy z nich.
Dwa dodatkowe pytania na końcu wymagają pozytywne (y) odpowiedzi:
Sign the certificate? [y/n] 1 out of 1 certificate requests certified, commit? [y/n]
Następnie zostanie wyświetlony następujący monit, wskazując na sukces.
Write out database with 1 new entries Data Base Updated
Krok #7 – Przeniesienie certyfikatów serwera i kluczy
Będziemy teraz kopiować certyfikat i klucz do /etc/openvpn, OpenVPN będzie szukać w tym katalogu dla CA certyfikat i klucz serwera.
cp /etc/openvpn/easy-rsa/keys/{server.crt,server.key,ca.crt} /etc/openvpn
Można sprawdzić, czy kopia została wykonana:
ls /etc/openvpn
Powinieneś zobaczyć certyfikat i pliki kluczy na serwerze.
W tym momencie serwer OpenVPN jest gotowy do pracy. Uruchom go i sprawdź stan.
service openvpn start
service openvpn status
Polecenie status wyświetla:
* openvpn.service - OpenVPN service Loaded: loaded (/lib/systemd/system/openvpn.service; enabled) Active: active (exited) since Thu 2015-06-25 02:20:18 EDT; 9s ago Process: 2505 ExecStart=/bin/true (code=exited, status=0/SUCCESS) Main PID: 2505 (code=exited, status=0/SUCCESS)
Co najważniejsze z wyświetlanego powyżej, należy znaleźć Active: active (exited) since...
zamiast Active: inactive (dead) since...
.
Twój serwer OpenVPN jest teraz gotowy do pracy. Jeśli komunikat pokazuje że VPN nie jest uruchomiony, poszukaj w pliku /var/log/syslog błędów, takich jak:
Options error: --key fails with 'server.key': No such file or directory
Ten błąd wskazuje że server.key
nie został skopiowany do /etc/openvpn poprawnie. Skopiuj plik jeszcze raz i spróbuj ponownie.
Krok #8 – Generowanie certyfikatów i kluczy dla klientów
Do tej pory zainstalowaliśmy i skonfigurowaliśmy serwer OpenVPN, stworzyłyśmy Certificate Authority, własny certyfikat serwera i klucz. W tym kroku używamy CA serwera do generowania certyfikatów i kluczę dla każdego urządzenia klienckiego, które będą łączyć się z siecią VPN.
Klucz i budowanie certyfikatu
Jest to idealne rozwiązanie dla każdego klienta łączącego się z siecią VPN, aby mieć swój własny, unikalny certyfikat i klucz. Najlepiej jest generować jeden wspólny certyfikat i klucz do użycia spośród wszystkich urządzeń klienckich.
Aby utworzyć osobne uwierzytelnienie dla każdego urządzenia, które zamierza połączyć się z siecią VPN, należy wykonać ten krok dla każdego urządzenia, ale zmienić nazwę client1 poniżej na coś innego, naprzykład client2 albo iphone2. Za pomocą indywidualnych danych logowania na jednym urządzeniu, później mogą być wyłączone na serwerze osobno, o ile zajdzie taka potrzeba. W pozostałych przykładach w tym tutorialu będziemy używać client1 jako przykładowa nazwa urządzenia klienckiego.
Jak to zrobiliśmy z kluczem serwera, teraz budujemy przykład dla naszego client1. Nadal pracujemy z plikiem /etc/openvpn/easy-rsa.
./build-key client1
Po raz kolejny, zostaniesz poproszony, aby zmienić lub potwierdzić zmienne Distinguished Name i te dwa monity powinny być puste. Naciśnij ENTER, aby zaakceptować ustawienia domyślne.
Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
Jak poprzednio, te dwa potwierdzenia na końcu procesu wymagają (y
):
Sign the certificate? [y/n] 1 out of 1 certificate requests certified, commit? [y/n]
Następnie otrzymasz następujący komunikat potwierdzający pomyślne zbudowanie kluczy.
Write out database with 1 new entries. Data Base Updated
Dalej będziemy kopiować wygenerowany klucz do katalogu Easy-RSA keys, który stworzyliśmy wcześniej. Należy pamiętać, że możemy zmienić rozszerzenie z .conf
na .ovpn
. Jest to dopasowanie konwencji.
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/easy-rsa/keys/client.ovpn
Można powtórzyć ten krok ponownie dla każdego klienta, zastępując client1 odpowiednią nazwą klienta.
Musimy edytować każdy plik klienta, w tym adres IP serwera OpenVPN, aby on wiedział że trzeba się połączyć. Otwórz client.ovpn za pomocą nano lub ulubionego edytora tekstu.
nano /etc/openvpn/easy-rsa/keys/client.ovpn
Po pierwsze, edytuj linię wiersz zaczynający z remote. Zmień my-server-1
na your_server_ip
.
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote your_server_ip 1194
Następnie znajdź tekst poniżej i usuń user nobody i group nogroup, podobnie jak robiliśmy to w pliku server.conf w Kroku #1.
To powinno wyglądać tak:
# Downgrade privileges after initialization (non-Windows only) user nobody group no group
Przeniesienie certyfikatów i kluczy do urządzeń klienckich
Przypomnijmy, że certyfikaty klienta i kluczy które stworzylismy w powyższych krokach są one przechowywane na serwerze OpenVPN w katalogu /etc/openvpn/easy-rsa/keys.
Dla każdego klienta musimy przenieść pliki certyfikatu klienta, klucz, a pliki template profilu do folderu na naszym lokalnym komputerze lub innym urządzeniu klienckim.
W tym przykładzie, nasze urządzenie client1 wymaga swój certyfikat i klucz, który znajduje się na serwerze w:
- /etc/openvpn/easy-rsa/keys/client1.crt
- /etc/openvpn/easy-rsa/keys/client1.key
Pliki ca.crt i client.ovpn są takie same dla wszystkich klientów. Pobierz tę dwa pliki; należy zwrócić uwagę, że plik ca.crt znajduje się w innym katalogu niż pozostale.
- /etc/openvpn/easy-rsa/keys/client.ovpn
- /etc/openvpn/ca.crt
Chociaż dokładne aplikacje używane do wykonania tego transferu zależy od wyboru i wersji systemu operacyjnego urządzenia, możesz użyć SFTP (SSH File Transfer Protocol) lub SCP (Secure Copy). To pozwoli transportować pliki uwierzytelniania VPN swojego klienta przez połączenie szyfrowane.
Przykładowe polecenie SCP poprzez nasz przykład client1. Ono umieszcza plik client1.key
do katalogu Downloads na komputerze lokalnym.
scp root@your-server-ip:/etc/openvpn/easy-rsa/keys/client1.key Downloads/
Pod koniec, upewnij się, że masz te cztery pliki na urządzeniu klienckim:
- `client1.crt`
- `client1.key`
- client.ovpn
- ca.crt
Krok #9 – Stworzenie jednolitego profilu OpenVPN dla urządzeń klienckich
Istnieje kilka sposobów zarządzania plikami klientów ale najprostszym jest wykorzystanie jednolitego profilu. To jest tworzone przez modyfikację template pliku client.ovpn
zawierającego Certificate Authority serwera oraz certyfikat klienta i jego klucz. Po połączeniu, tylko pojedynczy profil client.ovpn
musi być importowany do aplikacji OpenVPN klienta.
W tekscie podanym poniżej trzeba zakomentować trzy wierszy, zamiast nich włączymy certyfikat i klucz bezpośrednio do pliku client.ovpn
. Powinno to wyglądać tak:
# SSL/TLS parms. # . . . ;ca ca.crt ;cert client.crt ;key client.key
Zapisz zmiany i wyjdź. Będziemy dodawać certyfikaty za pomocą kodu.
Po pierwsze, należy dodać Certificate Authority.
echo '' >> /etc/openvpn/easy-rsa/keys/client.ovpn
cat /etc/openvpn/ca.crt >> /etc/openvpn/easy-rsa/keys/client.ovpn
echo '' >> /etc/openvpn/easy-rsa/keys/client.ovpn
Po drugie, dodamy certyfikat.
echo '<cert>' >> /etc/openvpn/easy-rsa/keys/client.ovpn
cat /etc/openvpn/easy-rsa/keys/client1.crt >> /etc/openvpn/easy-rsa/keys/client.ovpn
echo '</cert>' >> /etc/openvpn/easy-rsa/keys/client.ovpn
Po trzecie, należy dodać klucz.
echo '<key>' >> /etc/openvpn/easy-rsa/keys/client.ovpn
cat /etc/openvpn/easy-rsa/keys/client1.key >> /etc/openvpn/easy-rsa/keys/client.ovpn
echo '</key>' >> /etc/openvpn/easy-rsa/keys/client.ovpn
Mamy obecnie jednolity profil klienta. Za pomocą scp, można skopiować plik client.ovpn
do drugiego systemu.
Krok #10 – Instalacja profilu klienta
Różne platformy mają bardziej wygodne aplikacji do łączenia się z serwerem OpenVPN. Dla szczegółowe instrukcje różnych platform można znaleźć w Kroku 12 w tym tutorialu.
Wniosek
Gratulacje! Teraz masz pracujący serwer OpenVPN.
Z OpenVPN można przetestować połączenie za pomocą Google, aby ujawnić swój publiczny adres IP. Na komputerze klienckim, pobrać go raz przed uruchomieniem połączenia openvpn i zaraz po. Adres IP musi się zmienić.