Korištenje infrastrukture javnog ključa u postavljanju virtualne privatne mreže alatom OpenVPN - GASERI


U prethodnom smo se dijelu bavili postavljanjem OpenVPN-a u načinu rada točka-do-točke s jednim poslužiteljem i jednim klijentom koji šifriraju podatke u međusobnoj komunikaciji korištenjem jednog ili dva statička ključa. Postoji i drugi na...



Onion Details



Page Clicks: 1

First Seen: 03/15/2024

Last Indexed: 10/23/2024

Domain Index Total: 397



Onion Content



Preskoči na sadržaj Korištenje infrastrukture javnog ključa u postavljanju virtualne privatne mreže alatom OpenVPN U prethodnom smo se dijelu bavili postavljanjem OpenVPN-a u načinu rada točka-do-točke s jednim poslužiteljem i jednim klijentom koji šifriraju podatke u međusobnoj komunikaciji korištenjem jednog ili dva statička ključa. Postoji i drugi način rada koji je složeniji za postavljanje jer zahtijeva korištenje infrastrukture javnog ključa, ali podržava povezivanje više klijenata na poslužitelj i opcionalno omogućuje međusobnu komunikaciju klijenata. Kako je povezivanje više klijenata potrebno kod gotovo svake primjene virtualne privatne mreže, taj nam je način rada u praksi puno korisniji pa se njime bavimo u nastavku. Detaljno ćemo opisati proces stvaranja autoriteta certifikata za virtualnu privatnu mrežu i potpisivanje pojedinih certifikata od strane autoriteta certifikata. Poznavanje tog procesa će nam dobro doći i van virtualnih privatnih mreža jer se s certifikatima na sličan način radi i kod web poslužitelja i klijenata kad se koristi HTTPS. Note Ovaj dio je složen prema članku Setting up your own Certificate Authority (CA) koji je dio službene dokumentacije OpenVPN-a namijenjene za zajednicu . Cjelovite upute su dane u članku 2x HOW TO . Easy-RSA ( službena dokumentacija ) je alat za upravljanje infrastrukturom javnog ključa koja slijedi ITU-T standard X.509 . Infrastruktura javnog ključa koju ćemo koristiti u nastavku sastoji se od: autoriteta certifikata (engl. certificate authority , kraće CA), odnosno korijenskog certifikata i pripadnog privatnog ključa koji su temelj infrastrukture javnih ključeva certifikata koje je autoritet certifikata potpisao, koji sadrže javni ključ, metapodatke koji opisuju certifikat i digitalni potpis od strane privatnog ključa autoriteta certifikata zahtjeva za potpisom, koji sadrže javni ključ, metapodatke koji opisuju certifikat i digitalni potpis od strane vlastitog privatnog ključa para ključeva, koji se sastoji od javnog i tajnog ključa Warning U nastavku radimo s Easy-RSA 3.0 i novijim. Easy-RSA 2.0 ima isti način rada, ali umjesto jedne naredbe easyrsa i nekolicine podnaredbi (npr. easyrsa build-ca i easyrsa gen-dh ), ima skup odvojenih naredbi koje često imaju i druga imena (npr. build-ca ima isto ime, ali build-dh nema). Uvjerimo se da nam Easy-RSA radi i provjerimo koje naredbe ima: $ easyrsa help Easy-RSA 3 usage and overview USAGE: easyrsa [ options ] COMMAND [ command-options ] A list of commands is shown below. To get detailed usage and help for a command, run: easyrsa help COMMAND For a listing of options that can be supplied before the command, use: easyrsa help options Here is the list of commands available with a short syntax reminder. Use the 'help' command above to get full usage details. init-pki build-ca [ cmd-opts ] gen-dh gen-req [ cmd-opts ] sign-req build-client-full [ cmd-opts ] build-server-full [ cmd-opts ] revoke [ cmd-opts ] renew [ cmd-opts ] build-serverClient-full [ cmd-opts ] gen-crl update-db show-req [ cmd-opts ] show-cert [ cmd-opts ] show-ca [ cmd-opts ] import-req export-p7 [ cmd-opts ] export-p12 [ cmd-opts ] set-rsa-pass [ cmd-opts ] set-ec-pass [ cmd-opts ] upgrade DIRECTORY STATUS ( commands would take effect on these locations ) EASYRSA: /home/vedranm PKI: /home/vedranm/pki Na nekim distribucijama Linuxa naredba easyrsa nije ni u jednom od direktorija koji su navedeni u varijabli okoline PATH te je potrebno varijablu dopuniti odgovarajućim direktorijem: na Ubuntuu naredbom export PATH=/usr/share/easy-rsa:$PATH na Fedori naredbom export PATH=/usr/share/easy-rsa/3:$PATH Na Arch Linuxu i derivatima (npr. Manjaro i Garuda Linux) se naredba easyrsa nakon instalacije easy-rsa nalazi u /usr/bin te je odmah dostupna za korištenje. Na FreeBSD-u se naredba easyrsa nakon instalacije security/easy-rsa nalazi u /usr/local/bin te je odmah dostupna za korištenje. Osnovna struktura infrastrukture javnog ključa i autoritet certifikata Izradu certifikata i ključeva počinjemo naredbom init-pki koja će stvoriti potrebne datoteke direktorije: $ easyrsa init-pki complete ; you may now create a CA or requests. Your newly created PKI dir is: /home/vedranm/pki Unutar upravo stvorenog direktorija pki nalaze se prazni direktoriji private i reqs te datoteka openssl-easyrsa.cnf s konfiguracijom OpenSSL-a , koji Easy-RSA koristi za stvaranje ključeva, stvaranje zahtjeva za potpisivanjem certifikata i potpisivanje certifikata. Teoretski bismo mogli sve što radimo u nastavku napraviti i ručno pokrećući openssl više puta s različitim parametrima, ali to je vrlo nepraktično pa baš zbog toga postoji Easy-RSA koji to radi za nas. Kako se ne bi morali baviti metapodacima certifikata koje OpenSSL stvara, možemo koristiti datoteku vars . Primjer te datoteke na nekim distribucijama Linuxa postoji kao vars.example u /usr/share/easy-rsa , a mi ćemo je sami stvoriti neovisno o tom primjeru. Iz vars.example za nas su relevantne samo linije: #set_var EASYRSA_REQ_COUNTRY "US" #set_var EASYRSA_REQ_PROVINCE "California" #set_var EASYRSA_REQ_CITY "San Francisco" #set_var EASYRSA_REQ_ORG "Copyleft Certificate Co" #set_var EASYRSA_REQ_EMAIL "me@example.net" #set_var EASYRSA_REQ_OU "My Organizational Unit" #set_var EASYRSA_REQ_CN "ChangeMe" #set_var EASYRSA_KEY_SIZE 2048 Prepoznajemo metapodatke X.509 certifikata i postavku veličine ključa. Odkomentirati ćemo linije i postavit ćemo vrijednosti. U direktoriju pki stvorimo datoteku vars sadržaja: set_var EASYRSA_REQ_COUNTRY "HR" set_var EASYRSA_REQ_PROVINCE "Primorje-Gorski Kotar County" set_var EASYRSA_REQ_CITY "Rijeka" set_var EASYRSA_REQ_ORG "Odjel za informatiku Sveucilista u Rijeci" set_var EASYRSA_REQ_EMAIL "info@primjer-vpn.rm.miletic.net" set_var EASYRSA_REQ_OU "Laboratorij za racunalne mreze" set_var EASYRSA_REQ_CN "primjer-vpn.rm.miletic.net" set_var EASYRSA_KEY_SIZE 2048 Uočimo da smo postavili CN kao da se radi o domeni, što je dakako opcionalno. Veličinu ključa smo ostavili na zadanih 2048 bita. Izgradimo sad autoritet certifikata naredbom build-ca i pritom zaporku postavimo po želji: $ easyrsa build-ca Note: using Easy-RSA configuration from: /home/vedranm/pki/vars Using SSL: openssl OpenSSL 1 .1.1f 31 Mar 2020 Enter New CA Key Passphrase: Re-Enter New CA Key Passphrase: Generating RSA private key, 2048 bit long modulus ( 2 primes ) .................................................................................................................................................................++++ ................................................................................................................................................................................................................................................................................++++ e is 65537 ( 0x010001 ) Can 't load /home/vedranm/pki/.rnd into RNG 139911430903104:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:98:Filename=/home/vedranm/pki/.rnd You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter ' . ' , the field will be left blank. ---- Common Name ( eg: your user, host, or server name ) [ Easy-RSA CA ] : CA creation complete and you may now import and sign cert requests. Your new CA certificate file for publishing is at: /home/vedranm/pki/ca.crt Pogledajmo što smo upravo stvorili: $ ls -1 pki/private pki: ca.crt certs_by_serial index.txt issued openssl-easyrsa.cnf private renewed reqs revoked safessl-easyrsa.cnf serial vars pki/private: ca.key U direktoriju pki vidimo certifikat ca.crt , a u direktoriju pki/private njegov pripadni privatni ključ. Naredbom show-ca možemo pregledati stvoreni certifikat: $ easyrsa show-ca Note: using Easy-RSA configuration from: /home/vedranm/pki/vars Using SSL: openssl OpenSSL 1 .1.1f 31 Mar 2020 Showing details for 'ca' . This file is stored at: /home/vedranm/pki/ca.crt Certificate: Data: Version: 3 ( 0x2 ) Serial Number: 15 :4b:69:f0:48:dc:fa:60:30:12:19:6d:c1:88:de:de:c4:72:1f:65 Signature Algorithm: sha256WithRSAEncryption Issuer: commonName = Easy-RSA CA Validity Not Before: May 28 14 :18:27 2020 GMT Not After : May 26 14 :18:27 2030 GMT Subject: commonName = Easy-RSA CA X509v3 extensions: X509v3 Subject Key Identifier: B0:9B:24:08:5B:A6:08:6A:B8:57:2A:54:EE:40:08:F2:7A:66:82:84 X509v3 Authority Key Identifier: keyid:B0:9B:24:08:5B:A6:08:6A:B8:57:2A:54:EE:40:08:F2:7A:66:82:84 DirName:/CN = Easy-RSA CA serial:15:4B:69:F0:48:DC:FA:60:30:12:19:6D:C1:88:DE:DE:C4:72:1F:65 X509v3 Basic Constraints: CA:TRUE X509v3 Key Usage: Certificate Sign, CRL Sign Svako iduće pokretanje naredbe build-ca prvo će provjeriti imamo li već izgrađen autoritet certifikata i neće prepisati ključeve i ceritifikat novim: $ easyrsa build-ca Note: using Easy-RSA configuration from: /home/vedranm/pki/vars Using SSL: openssl OpenSSL 1 .1.1f 31 Mar 2020 Easy-RSA error: Unable to create a CA as you already seem to have one set up. If you intended to start a new CA, run init-pki first. Sad smo napravili autoritet certifikata. U stvarnosti ovaj autoritet certifikata koji će potpisivati serverski i klijentske certifikate može (ali ne mora) biti na odvojenom računalu od onoga na kojem će raditi OpenVPN poslužitelj. Poslužiteljski certifikat generiramo naredbom build-server-full . Proučimo kako se ona koristi naredbom help : $ easyrsa help build-server-full Note: using Easy-RSA configuration from: /home/vedranm/pki/vars build-client-full [ cmd-opts ] build-server-full [ cmd-opts ] build-serverClient-full [ cmd-opts ] Generate a keypair and sign locally for a client and/or server This mode uses the as the X509 CN. cmd-opts is an optional set of command options from this list: nopass - do not encrypt the private key ( default is encrypted ) Uočimo opciju nopass koja će nam pomoći da kasnije ne moramo unositi zaporku ključa kod njegovog korištenja. Nazovimo naš poslužitelj jednostavno mojposluzitelj ; za potpisivanje njegovog certifikata od strane autoriteta certifikata bit će potrebno unijeti zaporku autoriteta certifikata: $ easyrsa build-server-full mojposluzitelj nopass Note: using Easy-RSA configuration from: /home/vedranm/pki/vars Using SSL: openssl OpenSSL 1 .1.1f 31 Mar 2020 Generating a RSA private key ........................................................................................++++ .....................................++++ writing new private key to '/home/vedranm/pki/private/mojposluzitelj.key.Q9pCTpHqNe' ----- Using configuration from /home/vedranm/pki/safessl-easyrsa.cnf Enter pass phrase for /home/vedranm/pki/private/ca.key: Check tha...