Mga sertipiko ng Openvpn. Paglikha ng mga sertipiko at susi. Pagse-set up ng server side

OpenVPN ay isang application para sa paglikha ng isang secure na IP tunnel sa pamamagitan ng isang solong UDP - o TCP Ports - port 1194. Upang matiyak ang seguridad ng control channel at daloy ng data, ginagamit ng OpenVPN ang OpenSSL library (mas tiyak ang SSLv3 / TLSv1 protocol), i.e. Ang lahat ng mga kakayahan sa pag-encrypt, pagpapatunay at sertipikasyon ng OpenSSL library ay magagamit (anumang cipher, laki ng key). Ang HMAC algorithm para sa OpenVPN ay maaari ding gamitin upang magbigay ng higit na seguridad, at pagpapabilis ng hardware upang mapabuti ang pagganap ng pag-encrypt.

Ginagamit ang OpenVPN sa Solaris, OpenBSD, FreeBSD, NetBSD, GNU/Linux, Apple Mac OS X at Microsoft Windows.

    Nag-aalok ang OpenVPN sa user ng ilang uri ng pagpapatunay:

    Ang isang preset na key ay ang pinakasimpleng paraan.

    Gamit ang isang login at password, maaari itong magamit nang hindi lumilikha ng isang sertipiko ng kliyente (kailangan pa rin ng isang sertipiko ng server).

Maaaring gumamit ang OpenVPN ng mga static, pre-shared na key, o TLS-based na dynamic key exchange. Sinusuportahan din nito Mga koneksyon sa VPN na may mga dynamic na remote host (DHCP o dial-up client), mga tunnel sa NAT o sa pamamagitan ng isang ganap na firewall(hal. Linux iptables rules).

Ang mga setting ng configuration file ng kliyente ay magkapareho sa syntax at pagsulat para sa parehong Linux at Windows.

Mga Bahagi ng OpenVPN Network

Pangunahing Mga Bahagi at Bagay ng OpenVPN Network

    Awtoridad sa sertipikasyon ng CA. Nagbibigay ng mga sertipiko kapag hiniling mula sa mga node Mga network ng VPN, nilagdaan ng isang sertipiko ng awtoridad sa sertipikasyon. Nagbibigay sa mga host ng VPN ng kanilang sariling sertipiko upang i-verify ang partido ng pagpapatunay. Pinamamahalaan ang listahan ng pagbawi ng CRL certificate.

    OpenVPN Server. Lumilikha ang OpenVPN server software ng isang tunel sa loob hindi secure na network, halimbawa, ang Internet. Ang tunnel na ito ay nagbibigay ng secure na naka-encrypt na trapiko sa pagitan ng mga kalahok na node sa OpenVPN network.

    OpenVPN client. Naka-install ang OpenVPN client software sa lahat ng node na nangangailangan ng secure na channel ng komunikasyon sa OpenVPN server. Sa naaangkop na pagsasaayos ng OpenVPN server, ang secure na paglipat ng data ay posible sa pagitan ng mga kliyente ng OpenVPN, at hindi lamang sa pagitan ng mga kliyente at ng OpenVPN server.

    Mga Sertipiko (mga pampublikong susi) X.509. Ang mga X.509 na certificate ay mga pampublikong key na pinatunayan ng isang CA. Ginagamit ang mga ito upang i-encrypt ang data. Ang katotohanan na ang sertipiko ay sertipikado ng isang CA ay nagbibigay-daan sa iyo upang makilala ang partido na nagpapadala ng naka-encrypt na data. Ang isang file ng kahilingan sa sertipiko ay nilikha sa mga node ng network, pagkatapos ay ililipat ito sa node ng awtoridad ng sertipikasyon at nilagdaan doon. Ang resultang pinirmahang sertipiko ay inilipat pabalik sa OpenVPN network node na humiling nito.

    Mga pribadong susi. Ang mga pribadong susi ay sikreto. Dapat silang likhain at iimbak sa bawat node ng OpenVPN network, ay nilayon upang i-decrypt ang data, at hindi kailanman dapat ipadala sa network. Ang mga pribadong key ay nilikha sa OpenVPN network nodes nang sabay-sabay sa file ng kahilingan sa sertipiko.

    Listahan ng pagbawi ng CRL certificate. Naglalaman ng listahan ng mga certificate na nawalan ng tiwala. Ito ay nilikha at na-edit sa CA node. Upang idiskonekta ang isang node mula sa network, idagdag lang ang certificate nito sa CRL. Pagkatapos ng paglikha at bawat pagbabago, ang listahan ng CRL ay ililipat sa mga server ng OpenVPN.

    Diffie-Hellman file. Ito ay ginagamit upang maiwasan ang pag-decryption ng trapiko na naitala bago ang pagnanakaw sa kaso ng pagnanakaw ng susi. Nilikha sa OpenVPN server.

Seguridad at Pag-encrypt

Ang seguridad at pag-encrypt sa OpenVPN ay ibinibigay ng library Paano gamitin ang OpenSSL at ang protocol layer ng transportasyon Transport Layer Security (TLS). Sa halip na OpenSSL sa mga bagong bersyon ng OpenVPN, maaari mong gamitin ang PolarSSL library. Ang TLS protocol ay isang pagpapabuti sa secure na data transfer protocol ng Secure Socket Layers layer (SSL certificates para sa mga website, mail).

Ang OpenSSL ay maaaring gumamit ng simetriko at walang simetrya na kriptograpiya.

Sa unang kaso, bago simulan ang paglipat ng data, kinakailangan na ilagay ang pareho lihim na susi. Nagdudulot ito ng problema ligtas na paglipat ang susi na ito sa isang hindi secure na Internet.

Sa pangalawang kaso, ang bawat kalahok sa palitan ng data ay may dalawang susi - pampubliko (bukas) at pribado (lihim).

Ang pampublikong susi ay ginagamit upang i-encrypt ang data, at ang pribadong susi ay ginagamit upang i-decrypt. Ang pag-encrypt ay batay sa medyo kumplikadong matematika. Ang pampublikong key encryption algorithm na pinili sa SSL/TLS ay nagbibigay ng kakayahang mag-decrypt gamit lamang ang isang pribadong key.

Ang pribadong key ay sikreto at dapat manatili sa loob ng node kung saan ito nilikha. Ang pampublikong susi ay dapat na maipadala sa mga kalahok sa pagpapalitan ng data.

Para sa ligtas na paglilipat ng data, kinakailangan upang matukoy ang mga partidong kasangkot sa pagpapalitan ng data. Kung hindi, maaari kang maging biktima ng tinatawag na "man-in-the-middle attack" (Man in ang Gitna, MITM). Sa panahon ng naturang pag-atake, kumokonekta ang isang attacker sa isang channel ng paghahatid ng data at nag-eavesdrop dito. Maaari rin itong makagambala, magtanggal o magbago ng data.

Upang magbigay ng pagpapatunay (pagpapatunay ng gumagamit) TLS protocol gumagamit ng public key infrastructure (PKI) at asymmetric cryptography.

Kailangan mong mapagtanto na ang pag-decrypt ng data nang walang pribadong key ay posible rin, halimbawa, gamit ang malupit na puwersa. Bagama't ang pamamaraang ito ay masinsinang computation, ilang oras na lang bago ma-decrypt ang data.

Bagama't ang laki ng susi ay nakakaapekto sa kahirapan ng pag-decryption, walang susi ang naggagarantiya ng kumpletong seguridad ng data. Bilang karagdagan, may posibilidad ng pagnanakaw ng na-decrypted na data at mga susi dahil sa mga kahinaan at mga bookmark sa operating system o application software, gayundin sa hardware ng mga server at workstation.

Ang pag-encrypt ng data ay nagpapataas ng trapiko at nagpapabagal sa komunikasyon. Kung mas mahaba ang susi na ginamit sa pag-encrypt ng data, mas mahirap itong hanapin, ngunit mas kapansin-pansin ang paghina sa palitan ng data.

OpenVPN Debian Wheezy/sid

# aptitude install openvpn # mkdir /etc/openvpn/easy-rsa # cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/

Pagbabago ng mga default na setting para sa mga certificate

# nano /etc/openvpn/easy-rsa/vars ... export KEY_COUNTRY="US" export KEY_PROVINCE="CA" export KEY_CITY="SanFrancisco" export KEY_ORG="Fort-Funston" export KEY_EMAIL=" [email protected]"

Lumikha tayo mga variable ng kapaligiran bash , kung hindi ito nagawa, kapag bumubuo ng mga susi ng kliyente, kukunin ang mga variable mula sa /etc/openvpn/easy-rsa/openssl.cnf at hindi mula sa vars file

# cd /etc/openvpn/easy-rsa # source ./vars TANDAAN: Kung tatakbo ka ./clean-all, gagawa ako ng rm -rf sa /etc/openvpn/easy-rsa/keys # ./clean- lahat ng # ./build-dh

Gumawa tayo ng certificate para sa server na pinangalanang vpnspar

# ./pkitool --initca # ./pkitool --server vpnspar

Gumawa tayo ng sertipiko para sa isang kliyente na nagngangalang farm1c. Isang hiwalay na susi para sa bawat kliyente.

# ./pkitool farm1c # mkdir /etc/openvpn/keys # cp keys/ca.crt /etc/openvpn/keys # cp keys/dh1024.pem /etc/openvpn/keys # cp keys/vpnspar.crt /etc/openvpn /keys # cp keys/vpnspar.key /etc/openvpn/keys

Ang mga tindahan ng direktoryo ng ccd mga indibidwal na setting para sa bawat kliyente. Dapat tumugma ang pangalan ng file sa pangalan ng nabuong certificate ng kliyente. Ang mga file ng pagsasaayos ng kliyente ay mga text file at naglalaman ng mga utos na isinagawa ng server kapag kumonekta ang mga kliyente. Karaniwan ang client file ay naglalaman ng mga sumusunod na command:

    nagdaragdag ng ruta sa kliyente sa lokal na subnet ng central office (push "ruta 192.168.1.0 255.255.255.0")

    tinutukoy ang address ng lokal na subnet na matatagpuan sa likod ng kliyente (halimbawa, iroute 192.168.2.0 255.255.255.0)

    nagbubuklod sa isang static na IP (ifconfig-push 192.168.14.21 192.168.14.22), kung saan ang ifconfig-push . Ang mga napiling pares ng mga IP address, una, ay dapat na natatangi, pangalawa, sila ay dapat na bahagi ng magkakasunod na mga subnet na nililimitahan ng /30 mask (255.255.255.252), at, pangatlo, sila ay dapat nasa loob ng isang pool ng mga IP address, na nakatuon sa ang virtual pribadong network (tinukoy ng parameter ng server OpenVPN server configuration file).

# mkdir /etc/openvpn/ccd # nano ccd/farm1c push "ruta 192.168.1.0 255.255.255.0" #push "ruta 192.168.35.0 255.255.255.0" # static18.255.0 4.22 #iroute 192.168. 2.0 255.255.255.0

server.conf

I-configure ang server sa server.conf file

# cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ # gunzip server.conf.gz # nano /etc/openvpn/server.conf server.conf local xxx.196.98.xxx # IP kung saan nakikinig ang server para sa mga papasok na mensahe port 1194 # port kung saan nakikinig ang server para sa mga papasok na mensahe proto udp dev tun # Paganahin ang interface ng pamamahala ng OpenVPN. Available sa tulong ng telnet localhost 7505 pamamahala localhost 7505 ca keys/ca.crt # lokasyon ng self-signed trusted certificate (CA) cert keys/vpnspar.crt # lokasyon ng sertipiko ng server key keys/ vpnspar.key # lokasyon ng pribadong key ng server dh keys/ dh1024.pem # lokasyon ng Diffie-Halman parameter file # Pagtatakda ng server mode at VPN network address, # kung saan ang OpenVPN ay mamamahagi ng mga address sa mga kliyente. # Ang server ay kukuha ng 192.168.14.1, # iba pang mga address ang magiging available sa mga kliyente. # Magagawa ng bawat kliyente na makipag-ugnayan sa server sa 192.168.14.1. server 192.168.14.0 255.255.255.0 # ang ipp.txt file ay nag-iimbak ng impormasyon tungkol sa koneksyon, halimbawa sa kaso ng pagkabigo ng koneksyon # at ang karagdagang pagpapanumbalik nito ifconfig-pool-perist ipp.txt # ruta na ipapadala sa bawat kliyente. # push - OpenVPN command na ipinadala sa kliyente at pinaandar ng kliyente # (V sa kasong ito magdagdag ng dalawang ruta sa virtual pribadong network sa panig ng kliyente) itulak "ruta 192.168.1.0 255.255.255.0" itulak "ruta 192.168.35.0 255.255.255.0" # I-redirect ang default na gateway sa VPN server. Kung hindi kinakailangan, magkomento o # idagdag sa ccd para sa isang partikular na kliyente itulak ang "redirect-gateway def1" # ipahiwatig kung saan iimbak ang mga file na may mga setting ng IP address ng kliyente client-config-dir ccd # magdagdag ng ruta ng server-client. # ruta - nagdaragdag ng mga ruta sa gilid ng server sa mga lokal na subnet na matatagpuan sa likod ng mga kliyente ruta 192.168.14.0 255.255.255.252 # payagan ang mga kliyente na konektado sa OpenVPN server na makipag-usap sa isa't isa kliyente-sa-kliyente # Direktiba sa pagsusuri sa kalusugan kasama ang pagpapadala # ping-like na mensahe pabalik-balik sa pamamagitan ng # koneksyon para malaman ng bawat panig kung kailan # yung kabilang side ay biglang mawawala (bumaba). # Mag-ping bawat 10 segundo, sa pag-aakalang ang remote # node na hindi maabot kung hindi nakatanggap ng isang ping bawat yugto ng panahon # katumbas ng 120 segundo. keepalive 10 120 comp-lzo max-clients 10 user nobody group nogroup persist-key persist-tun # Mga nilalaman ng isang maliit na file ng katayuan na nagpapakita # kasalukuyang mga koneksyon, pinutol # at muling isinusulat isang beses bawat minuto. status / var/ log/ openvpn-status.log log / var/ log/ openvpn.log verb 3 # antas ng pag-debug# /etc/init.d/openvpn start

Bawiin ang isang sertipiko ng kliyente

    Halimbawa. Pagbawi sa certificate ng user farm1c # cd /etc/openvpn/easy-rsa # source ./vars # ./revoke-full farm1c Gamit ang configuration mula sa /etc/openvpn/easy-rsa/openssl.cnf Pagbawi ng Certificate 02. Na-update ang Data Base

    Pagkatapos ng revoke-full command, ang linyang nauugnay sa farm1c user certificate ay papalitan ng file /etc/openvpn/easy-rsa/keys/index.txt.

Pag-install ng OpenVPN + OpenVZ

Pag-install VE(VPS, VDS)

    Pag-install ng VE Ubuntu para sa OpenVZ # cd /vz/template/cache/ # wget -c http://download.openvz.org/template/precreated/ubuntu-14.04-x86_64-minimal.tar.gz # vzctl create 111 --layout simfs --ostemplate ubuntu-14.04-x86_64-minimal CT configuration na na-save sa /etc/vz/conf/111.conf

    Kino-configure ang VE 111.conf.

    Ang lahat ng iba pang mga setting ay ginawa na sa naka-install na VE # vzctl enter 111

Paglikha ng mga Susi

    Paglikha ng mga susi gamit ang Easy-RSA utility. Noong nakaraan, ang utility na ito ay bahagi ng pamamahagi ng OpenVPN server, ngunit ngayon ay isang hiwalay na proyekto. Maaaring ma-download ang pinakabagong bersyon ng utility mula sa website ng OpenVPN, ngunit mas tama na gamitin ang bersyon na ibinigay kasama ng iyong pamamahagi ng OS. aptitude install easy-rsa

    Bago simulan ang OpenVPN daemon, kailangan namin ng OpenSSL configuration file sa /etc/openvpn/keys directory; server.conf - OpenVPN server configuration file; ca.crt - sertipiko ng awtoridad ng sertipikasyon; vpn-server.crt - Sertipiko ng OpenVPN server; server.key - pribadong susi OpenVPN server, lihim; crl.pem - listahan ng pagbawi ng sertipiko; dh.pem - Diffie-Hellman file upang protektahan ang trapiko mula sa pag-decryption; ta.key - HMAC key para sa karagdagang proteksyon mula sa mga pag-atake ng DoS at pagbaha

    Kopyahin ang direktoryo ng easy-rsa sa lugar kung saan gagawa kami ng public key infrastructure (PKI) cp -R /usr/share/easy-rsa /etc/openvpn/ cd /etc/openvpn/easy-rsa

    Pagbabago ng mga default na setting para sa mga certificate sa vars file

    I-export ang KEY_COUNTRY="US" export KEY_PROVINCE="CA" export KEY_CITY="SanFrancisco" export KEY_ORG="Fort-Funston" export KEY_EMAIL=" [email protected]" export KEY_OU="MyOrganizationalUnit"

    Gumawa tayo ng mga variable ng kapaligiran.

    Source ./vars TANDAAN: Kung tatakbo ka ./clean-all, gagawa ako ng rm -rf sa /etc/openvpn/easy-rsa/keys

    Alisin natin sa mga nakaraang eksperimento. Gumawa tayo ng Diffie-Hellman key (ang susi ay tumatagal ng ilang oras upang malikha).

    ./clean-all ./build-dh Pagbuo ng mga parameter ng DH, 2048 bit long safe prime, generator 2 Ito ay magtatagal ...

    Gumawa tayo ng isang direktoryo upang mag-imbak ng mga pribadong key ng OpenVPN server. Kopyahin ang Diffie-Hellman file doon (dh2048.pem) mkdir /etc/openvpn/keys cp keys/dh2048.pem /etc/openvpn/keys/

    Lumikha tayo Awtoridad sa sertipikasyon ng CA. ca.crt at ca.key ay malilikha. Ang ca.key file ay kumakatawan sa pribadong key ng CA, ito sikreto, at siya hindi maililipat sa iba pang mga node sa iyong network. Ang CA certificate file na ca.crt, sa kabaligtaran, ay bukas, at kakailanganin ito sa mga node ng server at Mga kliyente ng OpenVPN. ./pkitool --initca

    Gumawa tayo ng certificate para sa server na pinangalanang vpnluxor ./pkitool --server vpnluxor

    Kopyahin ang mga nagawang file na vpnluxor.crt at vpnluxor.key sa /etc/openvpn/keys/ directory

    Gumawa tayo ng certificate para sa client client1 gamit ang CommonName parameter ng parehong pangalan. Isang hiwalay na susi para sa bawat kliyente. ./pkitool client1

Lokasyon ng mga sertipiko at susi

file kotse Layunin Access
ca.crtServer at mga kliyenteSertipiko ng Root CAPampubliko
ca.keySa server langKinakailangan para sa pagpirma ng iba pang mga sertipikoLihim
dh(n).pemSa server langMga parameter ng Diffie HellmanPampubliko
vpnspar.crtSa server langSertipiko ng serverPampubliko
vpnspar.keySa server langSusi ng serverLihim
darkfire.crtSa kliyente langSertipiko ng kliyentePampubliko
darkfire.keySa kliyente langSusi ng kliyenteLihim

Pag-install ng OpenVPN

Ang direktoryo ng ccd ay nag-iimbak ng mga indibidwal na setting para sa bawat kliyente. mkdir /etc/openvpn/ccd

Pagpapalawak ng mga hangganan ng network ng VPN

Pagpapalawak ng Mga Hangganan ng VPN upang Isama karagdagang mga sasakyan mula sa mga subnet sa panig ng kliyente o server. Paganahin ang maramihang mga makina sa gilid ng server kapag gumagamit ng isang naka-ruta na VPN (dev tun)

Dahil ang isang VPN ay nagpapatakbo lamang ng point-to-point, maaari mong palawakin ang saklaw ng VPN upang ang mga kliyente ay maaaring makipag-usap sa iba pang mga makina sa network ng server, hindi lamang sa server mismo.

Upang ilarawan ito sa isang halimbawa, ipagpalagay na sa lokal na network sa server side, ang subnet ay 10.66.0.0/24 at para sa pool ng mga VPN address, 10.8.0.0/24 ang ginagamit, gaya ng nakasaad sa server directive sa OpenVPN server configuration file.

Una, dapat mong sabihin sa mga kliyente ng VPN na ang 10.66.0.0/24 subnet ay naa-access sa pamamagitan ng VPN. Madali itong magawa gamit ang mga sumusunod na direktiba sa configuration file mga server:

Itulak ang "ruta 10.66.0.0 255.255.255.0"

Susunod, kailangan mong i-configure ang isang ruta sa LAN gateway sa network ng server upang iruta ang mga packet na nakalaan para sa VPN client subnet (10.8.0.0/24) sa pamamagitan ng OpenVPN server (ito ay kinakailangan lamang kapag ang OpenVPN server at ang LAN gateway ay iba't ibang makina).

Iptables -A INPUT -p udp --dport 1194 -j ACCEPT iptables -A INPUT -i tap+ -j ACCEPT or iptables -A INPUT -i tun+ -j ACCEPT

Pamamahala ng OpenVPN

Problema sa PPPoE at OpenVPN

Problema: Kung ang server ay konektado sa ISP gamit ang teknolohiya Paano gumagana ang PPPoE, sa kasong ito ay hindi magagawa ng OpenVPN naa-access na mga network sa likod ng konektadong kliyente. Hindi gagana ang iroute command. Ito ay dahil sa katotohanan na isinusulat ng PPP ang default na ruta tulad ng sumusunod:

# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 ppp0

Yung. ang interface (ppp0) ay ipinahiwatig ng default na ruta, hindi ang IP address, hindi naiintindihan ng OpenVPN server ang naturang entry, para sa tamang operasyon Ang ruta ng OpenVpn server ay dapat magmukhang:

# netstat -rn Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 91.196.96.35 255.255.255.255 UGH 0 0 0 ppp0

Client proto udp dev tun ca.crt dh dh2048.pem cert client.crt key client.key remote xxx.xxx.xxx.xxx 1194 tls-auth ta.key 1 cipher AES-256 -CBC user nobody group nogroup verb 2 mute 20 keepalive 10 120 comp-lzo persist-key persist-tun float resolv-retry infinite nobind

Pag-ikot ng log ng OpenVPN

    Sa file /etc/logrotate.d/openvpn isinusulat namin ang mga setting para sa Paglalarawan at mga halimbawa ng pag-set up ng logrotate sa Linux, key parameter copytruncate(para hindi ma-overload ang OpenVPN at pilitin itong magsulat ng data sa parehong log file) openvpn etc/ openvpn/ servers/ vpnluxor/ logs/ openvpn.log ( daily rotate 8 compress delaycompress missingok copytruncate notifempty create 640 root )

Virtual pribadong network. Sa tulong nito magagawa natin:

  • Gumawa ng secure na channel ng komunikasyon habang nakaupo kami libreng Wi-Fi sa isang cafe.
  • Magpalitan ng mga file sa pagitan ng mga kalahok sa network.
  • Ipamahagi ang Internet gamit ang isang karaniwang gateway.

Pangunahing pakinabang:

  • Madaling i-set up.
  • Kaligtasan.
  • Hindi nangangailangan ng karagdagang kagamitan.
  • Mataas na bilis at katatagan.

Tulad ng may-akda ng artikulo tungkol sa pag-install ng OpenVPN sa Linux, wala akong nakitang normal na artikulo, at kahit isa na naglalarawan sa lahat hanggang sa pinakamaliit na detalye. Sa artikulong ito sa Habrahabr susubukan kong ipaliwanag ang lahat nang malinaw hangga't maaari. Kaya, tayo na!

I-download ang pamamahagi.

Sa oras ng pagsulat, ang magagamit na bersyon 2.3.2 . I-download ang Windows installer na 32-bit o 64-bit na bersyon upang tumugma sa iyong bitness operating system.

Pag-install.

Kapag nag-i-install, siguraduhing suriin ang lahat ng mga kahon; May lalabas na bagong virtual network adapter sa system.

Paglikha ng mga sertipiko at susi.

Minsan ang puntong ito ay huminto sa akin, sabi nila, well, ito ang mga susi, pupunta ako at maghahanap ng mas simple. Ngunit, sayang, wala akong nakitang mas mahusay. Kaya, pumunta sa C:\Program files\OpenVPN\easy-rsa, patakbuhin ang init-config.bat, lalabas ang vars.bat, buksan ito sa Notepad. Interesado kami sa mga linya sa pinakailalim; Halimbawa:
itakda ang KEY_COUNTRY=RU
itakda KEY_PROVINCE=Baldur
itakda ang KEY_CITY=Piter
itakda ang KEY_ORG=OpenVPN
itakda
itakda ang KEY_CN=server
itakda ang KEY_NAME=server
itakda ang KEY_OU=ouou

Kung saan nakasulat server wag mong hawakan. Nai-save.
Ngayon buksan ang openssl-1.0.0.cnf at hanapin ang linyang default_days 365, itakda ito sa 3650. Ito ay magpapahaba sa buhay ng aming mga certificate ng 10 taon. I-save. Susunod, buksan ang command line sa start-standard-command line (sa Windows Vista/7/8 bilang administrator), sumulat nang sunud-sunod:

cd C:\OpenVPN\easy-rsa
vars
malinis-lahat

Dapat isulat ng tugon ang "Mga nakopyang file: 1" nang dalawang beses. Kaya okay na ang lahat. Sa parehong window nagta-type kami:
build-dh
Gagawa ng Diffie-Hellman key.
build-ca
Gagawa ng pangunahing sertipiko.
Magtatanong, pindutin lamang ang Enter hanggang makita mo ang landas C:\Program files\OpenVPN\easy-rsa. Sunod naming i-type:
build-key-server server
Para sa mga tanong, pindutin din ang Enter, maglaan lang ng oras! Sa dulo ay magkakaroon ng dalawang tanong: "Pirmahan ang sertipiko?" at "1 sa 1 mga kahilingan sa sertipiko ay na-certify, nag-commit?", sagutin ang Y sa parehong mga tanong. Ngayon, gumawa tayo ng isang sertipiko ng kliyente.
build-key na kliyente
Dito kailangan mong maging mas maingat kapag tinanong ang Common Name (hal., iyong pangalan o hostname ng iyong server), kailangan mong ipasok ang client. Sa dulo mayroon ding dalawang beses na Y. Para sa bawat kliyente kailangan mong lumikha ng bagong sertipiko, na may ibang pangalan lamang, halimbawa, build-key client1 at ipahiwatig din ito sa karaniwang pangalan. Kung ginawa mo ang lahat ng tama, maaari kang huminga! Ang pinakamahirap na bahagi ay tapos na. Sa folder na C:\Program Files\OpenVPN\easy-rsa\keys na kinukuha namin: ca.crt, dh1024.pem, server.crt, server.key at ilagay ang mga ito sa C:\Program Files\OpenVPN\config.

Gumagawa kami ng mga config.

Pumunta sa C:\Program Files\OpenVPN\config, gumawa ng text document, i-paste:
# Itaas ang L3 tunnel
dev tune
# Protocol
proto udp
# Port na pinakikinggan ng VPN
port 12345
# Mga susi at sertipiko
caca.crt
cert server.crt
key server.key
dh dh1024.pem
# Sa halos pagsasalita, nagse-save kami ng mga address
topology subnet
# Address pool
server 10.8.0.0 255.255.255.0
# Paraan ng pag-encrypt
cipher AES-128-CBC
# Compression
comp-lzo
# Pagbutihin nang bahagya ang ping
mssfix
# Habambuhay ng mga kliyente, kung hindi tumugon - madidiskonekta
keepalive 10 120
# Antas ng pag-debug
pandiwa 3

I-save ang file bilang server.ovpn. Ito ang aming server config. Ngayon subukan nating simulan ang server. Magkakaroon ng shortcut sa OpenVPN Gui sa iyong desktop. Pagkatapos ng paglunsad, may lalabas na pulang icon sa tray. Nag-click kami dito nang dalawang beses, kung nag-ilaw ito ng berde, kung gayon ang lahat ay maayos, kung hindi, pagkatapos ay tingnan ang log sa folder ng log.

Ngayon ang client config:
kliyente
dev tune
proto udp
# Server address at port
malayong address 12345
# Ang mga susi ay dapat nasa folder ng config
caca.crt
cert client.crt
key client.key
cipher AES-128-CBC
nobind
comp-lzo
magpumilit-susi
magpumilit-tun
pandiwa 3

I-save ito bilang client.ovpn. Lumikha ng anumang folder at ilagay ang client.ovpn config at ang ca.crt, client.crt, client.key certificate doon, na matatagpuan sa C:\Program files\OpenVPN\easy-rsa. I-download ang client para sa Windows sa makina ng kliyente i-install, ilipat ang folder na may config at certificate at patakbuhin ang client.ovpn. Kung nakakonekta ka, subukang i-type ang ping 10.8.0.1 sa command line. Dumating na ba ang mga pakete? Binabati kita! Handa na ang server! Pumunta ngayon sa control panel-administration-services, hanapin ang OpenVPN doon, i-double click at itakda ito sa awtomatiko. Ngayon ang server ay magsisimula sa sarili nitong pagkatapos ng pag-reboot.

Tinatapos namin ang config o ang bawat isa sa kanya.

Ngayon sasabihin ko sa iyo kung paano ipamahagi ang Internet at iba pang maliliit na bagay na may kaugnayan sa pag-setup. Magsimula tayo sa maliliit na bagay. Isasagawa namin ang lahat ng manipulasyon gamit ang config ng server.
Kung gusto mong "makita" ng iyong mga kliyente ang isa't isa, i.e. maaaring makipagpalitan ng impormasyon, pagkatapos ay pumasok sa config
kliyente-sa-kliyente.
Kung kinakailangan para sa mga kliyente na maibigay mga static na address, pagkatapos ay sa config folder lumikha ng isang file na ip.txt at ilagay ito sa config
ifconfig-pool-perist ip.txt
Hindi nais na lumikha ng mga sertipiko para sa lahat? Tapos nagsusulat kami duplicate-cn, ngunit tandaan na ang ifconfig-pool-perist ay hindi gumagana sa opsyong ito.
Ngayon tungkol sa config ng kliyente. Hindi ka maaaring maglipat ng mga file ng sertipiko, ngunit ipasok ang mga ito nang direkta sa config, ngunit mas mahusay na gawin ito hindi mula sa isang notepad, ngunit mula sa AkelPad o Notepad++, halimbawa. Buksan ang ca.crt at pumili mula sa ——SIMULA NG CERTIFICATE—— hanggang ——END CERTIFICATE——. Magiging ganito ang config:


——SIMULA ANG CERTIFICATE——
sertipiko
——END CERTIFICATE——


——SIMULA ANG CERTIFICATE——
sertipiko
——END CERTIFICATE——


——SIMULA ANG PRIBADONG SUSI——
susi
——END PRIVATE KEY——

Ipinamahagi namin ang Internet

Upang gawin ito, pumasok sa config ng server:
itulak ang "redirect-gateway def1"
itulak ang "dhcp-option DNS 8.8.8.8"
itulak ang "dhcp-option DNS 8.8.4.4"

Pinapalitan namin ang mga DNS address na ibinigay sa mga setting. Maaari mo itong tingnan sa pamamagitan ng pagpunta sa panel mga koneksyon sa pamamahala-network, sa pamamagitan ng pag-double click sa adapter na nakikita sa Internet. Para sa Win7 Control Panel - Network at Internet Network at Sharing Center - baguhin ang mga setting ng adapter. Susunod, pumunta sa mga katangian ng parehong adaptor, tab ng pag-access, lagyan ng tsek ang kahon sa tabi ng "Pahintulutan ang iba pang mga gumagamit ng network ..." at sa drop-down na listahan, kung magagamit, piliin ang virtual vpn adapter. Pagkatapos ay pumunta sa mga katangian ng vpn adapter, ang mga katangian ng ipv4 at awtomatikong itakda ang pagtanggap ng ip at dns. Salamat sa iyong pansin!

Ang mga router ng serye ng RTU ay may kakayahang gumamit ng secure na koneksyon sa pamamagitan ng pribado virtual network, tinawag OpenVPN

Proseso ng pag-setup at pagsasaayos ng paketeng ito para sa karaniwang gumagamit maaari itong samahan ng napakaraming kahirapan dahil sa kakulangan ng kinakailangang kaalaman.

Halos lahat ng configuration ay maaaring gawin sa pamamagitan ng WEB interface, ngunit ang ilang mga elemento ay kailangan pa ring gawin sa pamamagitan ng console!

Ano ang OpenVPN at bakit ito kailangan ay makikita sa pamamagitan ng artikulo sa Wikipedia: OpenVPN

Sa artikulong ito ay makikilala natin ang bahagi ng paghahanda, ito ang pagbuo ng mga sertipiko at mga susi sa pag-encrypt upang maprotektahan ang aming channel ng paghahatid.

1. Pagbuo ng mga certificate at key sa Windows

Upang makabuo ng mga certificate at encryption key sa Windows OS, kailangan mong i-install ang application mismo OpenVPN

Pagkatapos i-download at i-install ito sa folder na iyong tinukoy, maglalaman ito ng listahan ng mga file. Para sa akin ito ang folder na C:\Program Files\OpenVPN\

Kailangan nating pumunta sa folder madaling-rsa

Kailangang buksan Windows console(para sa Windows Vista/7/8/8.1/10 kailangan mong tumakbo bilang Administrator)

Maaari mong malaman kung paano ilunsad ang command line (console) bilang isang administrator sa pamamagitan ng pag-type sa isang search engine (Yandex, Google, Mail, atbp.) ng parirala: " Paano magpatakbo ng command prompt bilang administrator"

Pumunta sa folder madaling-rsa kasama ang landas ng pag-install na may utos CD

Halimbawa:

cd C:\Program Files\OpenVPN\easy-rsa

1.1 Patakbuhin ang init-config.bat file

C:\Program Files\OpenVPN\easy-rsa>init-config.bat
C:\Program Files\OpenVPN\easy-rsa>copy vars.bat.sample vars.bat
Nakopya ang mga file: 1.

Lalabas ang file sa folder vars.bat, buksan mo text editor, interesado kami sa mga linya sa pinakadulo, kailangan nilang punan

Itinakda namin ang aming mga parameter, ang iyong mga parameter ay magkakaiba.

itakda KEY_COUNTRY= RU
itakda ang KEY_PROVINCE= Moscow
itakda ang KEY_CITY= Moscow
itakda ang KEY_ORG= TELEOFIS
itakda ang KEY_EMAIL= [email protected]
itakda ang KEY_CN= server
itakda ang KEY_NAME= server
itakda ang KEY_OU= server
itakda ang PKCS11_MODULE_PATH= server
itakda ang PKCS11_PIN= 12345

Kung saan sinasabing server, huwag itong hawakan. I-save ang file.

Hanapin ang linyang default_days 365 at palitan ang numerong 365 ng 3650. Sa paggawa nito, madaragdagan namin ang habang-buhay ng aming mga sertipiko ng 10 taon.

I-save at isara.

1.3 Pagbuo ng mga susi

Nagsusulat kami ng mga utos sa console

vars

malinis-lahat

Dapat dumating ang sagot

Nakopya ang mga file: 1.
Nakopya ang mga file: 1.

Kung nakita natin ito, kung gayon ang lahat ay maayos, patuloy tayo...

Paglikha ng Diffie-Hellman key

build-dh

Lumikha ng pangunahing sertipiko

build-ca

Kapag bumubuo ng pangunahing sertipiko, ang mga tanong ay ipapakita sa console. Pindutin lang ang Enter, dahil... Inilagay namin ang lahat ng mga parameter na ito sa file vars.bat

Pindutin ang Enter hanggang lumitaw ang prompt na linya

C:\Program Files\OpenVPN\easy-rsa

build-key-server server

Para sa mga tanong, pindutin din ang Enter, ngunit maglaan ng oras, sa pinakadulo, dalawang katanungan ang itatanong

Pirmahan ang sertipiko?

Sinasagot namin ang Y sa parehong mga tanong na ito.

Lumilikha kami ngayon ng certificate at client key:

build-key na kliyente

Naglalaan din kami ng oras sa mga sagot sa sandaling makita namin ang linya " Karaniwang Pangalan (hal., iyong pangalan o hostname ng iyong server)"kailangan sagutin kliyente

Sa pinakadulo ay magkakaroon din ng dalawang katanungan, sinasagot din namin ang Y

Higit pa rito: para sa bawat kliyente, kakailanganin mong lumikha ng hiwalay na mga susi at pangalanan ang mga ito kliyente1, kliyente2 o sa ibang paraan, depende ang lahat sa iyong imahinasyon. Tandaan din na ilagay ang mga pangalang ito kapag sinenyasan Karaniwang Pangalan

Halimbawa:

build-key client1

build-key na opisina1

Ang lahat ng mga file ay nasa folder C:\Program Files\OpenVPN\easy-rsa\keys\

Mula sa folder na ito kinukuha namin ang:

dh1024.pem(o dh2048.pem)

server.crt

server.key

2. Bumubuo ng mga certificate at key sa Linux

Gagawa kami ng isang halimbawa ng pagbuo ng mga certificate at key sa operating system Ubuntu Linux 16.04 LTS

Para sa iba pang mga sistema sa Nakabatay sa Linux, maaaring magkaiba ang ilang utos!

Buksan ang operating system console at mag-install ng maliit na pakete madaling-rsa

sudo apt-get install easy-rsa

Pumunta sa direktoryo kung saan naka-install ang certificate generation package

cd /usr/share/easy-rsa/

Ang tanging bagay lang ay ang folder na ito ay masusulat lamang ng superuser, upang wala kaming mga problema sa hinaharap, babaguhin namin ang may-ari (Huwag palampasin ang tuldok sa dulo ng utos!!!)

sudo chown -R teleofis:teleofis .

Ngayon ay i-configure natin ang impormasyon tungkol sa mga certificate na gagawin

nano vars

Nahanap namin ang mga puntong ito at binago namin ang mga ito upang umangkop sa aming sarili

i-export ang KEY_SIZE=1024 // Haba ng key
i-export ang CA_EXPIRE=3650 // Master key validity period sa mga araw
i-export ang KEY_EXPIRE=3650 // Panahon ng bisa ng sertipiko sa mga araw
i-export ang KEY_COUNTRY="RU" // Bansa
i-export KEY_PROVINCE="Moscow" // Rehiyon
i-export KEY_CITY="Moscow" // Lungsod
i-export ang KEY_ORG="TELEOFIS" // Organisasyon
i-export ang KEY_EMAIL=" [email protected]" // Email
i-export ang KEY_OU="server" // Department
i-export ang KEY_NAME="server"// Pangalan ng susi

Pagkatapos mag-edit, i-save ang file.

Kopyahin pinakabagong bersyon OpenSSL configuration sa file openssl.cnf

cp openssl-1.0.0.cnf openssl.cnf

Naglo-load ng mga variable

pinagmulan ./vars

Kung sakali, linisin natin ang basura.

./linis-lahat

Lumikha ng sertipiko ng server

./build-ca

Para sa lahat ng tanong, pindutin ang Enter, na-edit namin ang lahat ng mga parameter na ito nang maaga sa file vars


.........................................++++++
.......................................................................................++++++
pagsulat ng bagong pribadong key sa "ca.key"
-----






-----





Karaniwang Pangalan (hal., iyong pangalan o hostname ng iyong server):
Pangalan:
Email Address:

Gumawa ng server key

./build-key-server server

Sinasagot namin ang lahat ng tanong gamit ang Enter , ngunit kailangan mong mag-ingat, sa dulo ay magkakaroon ng ilang mga katanungan tungkol sa password at isang opsyonal na pangalan

Para din sa mga katanungan

Pirmahan ang sertipiko?

1 sa 1 mga kahilingan sa sertipiko ay na-certify, gumawa?

Sagot namin Y

Bumubuo ng 1024 bit RSA private key
..............................++++++
.....................++++++
pagsulat ng bagong pribadong key sa "server.key"
-----
Hihilingin sa iyo na ipasok ang impormasyon na isasama
sa iyong kahilingan sa sertipiko.
Ang iyong papasukin ay ang tinatawag na Distinguished Name o isang DN.
Medyo marami ang field pero kaya mo mag-iwan ng ilang blangko
Para sa ilang mga field magkakaroon ng default na halaga,
Kung ilalagay mo ang ".", iiwang blangko ang field.
-----
Pangalan ng Bansa (2 letter code):
Pangalan ng Estado o Lalawigan (buong pangalan):
Pangalan ng Lokalidad (hal., lungsod):
Pangalan ng Organisasyon (hal., kumpanya):
Pangalan ng Unit ng Organisasyon (hal., seksyon):
Karaniwang Pangalan (hal., iyong pangalan o hostname ng iyong server):
Pangalan:
Email Address:

Pakipasok ang mga sumusunod na "dagdag" na katangian
na ipapadala kasama ng iyong kahilingan sa sertipiko
Isang hamon na password:
Isang opsyonal na pangalan ng kumpanya:
Paggamit ng configuration mula sa /usr/share/easy-rsa/openssl-1.0.0.cnf
Tingnan kung ang kahilingan ay tumutugma sa lagda
Ok ang lagda
Ang Natatanging Pangalan ng Paksa ay ang mga sumusunod
Pangalan ng bansa:PRINTABLE:"RU"
stateOrProvinceName:PRINTABLE:"Moscow"
localityName:PRINTABLE:"Moscow"
Pangalan ng organisasyon:PRINTABLE:"TELEOFIS"
organizationalUnitName:PRINTABLE:"server"
commonName:PRINTABLE:"server"
pangalan:PRINTABLE:"server"
emailAddress:IA5STRING:" [email protected]"
Ang sertipiko ay dapat sertipikado hanggang Dis 20 13:25:10 2026 GMT (3650 araw)
Pirmahan ang sertipiko? :y

1 sa 1 mga kahilingan sa sertipiko ay na-certify, gumawa? y
Sumulat ng database na may 1 bagong entry
Na-update ang Data Base

Paglikha ng Diffie-Hellman key

./build-dh

Pansin!!! Maaaring mabuo ang file mahabang panahon, hinihintay natin ang katapusan ng henerasyon.

Pagbuo ng mga parameter ng DH, 1024 bit long safe prime, generator 2
Magtatagal ito
.......+................+.............+.............................................................................+................+........................+...........................................+...............................................................................................................................................+....................+........................................+...................................................................................+....................................................................................................................+.+...................................++*++*++*

Gumagawa kami ng mga susi ng kliyente sa parehong paraan

./build-key client1

./build-key rtu968

Sinasagot namin ang lahat ng tanong gamit ang Enter , ngunit mag-ingat sa dulo, magkakaroon ng higit pang mga kahilingan

Pirmahan ang sertipiko?

1 sa 1 mga kahilingan sa sertipiko ay na-certify, gumawa?

Sinasagot namin sila ng Y

Kinukumpleto nito ang paglikha ng mga sertipiko at mga pangunahing file.

Sa isang folder /usr/share/easy-rsa/keys/ ang aming mga sertipiko at susi ay naroroon

dh1024.pem(o dh2048.pem)

server.crt

server.key

3. Mga karagdagang opsyon

Mayroon ding mga karagdagang susi at pamamaraan upang mapataas ang seguridad ng koneksyon.

3.1 Susi para sa pagpapatunay ng TLS

Binuo ng utos:

openvpn --genkey --secret %KEY_DIR%\ta.key-Windows

Para sa Linux, kailangan mo ang buong pakete ng OpenVPN, ang pakete lamang madaling-rsa hindi magiging sapat!

I-install kumpletong pakete Maaaring gawin ang OpenVPN sa utos

sudo apt-get install openvpn

openvpn --genkey --secret /usr/share/easy-rsa/keys/ta.key- Linux

3.2 Pagpapatunay at pagbawi ng mga sertipiko

Maaari din tayong lumikha karagdagang file crl.pem, kung saan susuriin at babawiin ang mga sertipiko.

Hindi mo kailangang gamitin ang file na ito, walang masamang mangyayari.

Para magamit ito, gumawa ng certificate ng user:

build-key crlsert - Windows

./build-key crlsert - Linux

Sinasagot namin ang lahat ng tanong sa pamamagitan ng pagpindot sa Enter, maliban Karaniwang Pangalan At Pangalan

Para sa mga field na ito, ipinapahiwatig namin ang pangalan ng sertipiko mismo.

At sa wakas, sa mga kahilingan Lagdaan ang sertipiko? , 1 sa 1 mga kahilingan sa sertipiko ay na-certify, gumawa? Sagot namin Y

Pagkatapos nito pinapatakbo namin ang utos bawi-puno, siya ang may pananagutan sa pagbawi ng sertipiko at kasunod na paggawa ng file crl.pem

bawiin-buong crlsert - Windows

./revoke-full crlsert - Linux

Ang mga sertipiko ay nag-file mismo crlsert maaaring tanggalin. Sa sandaling binawi, hindi sila awtomatikong maaalis sa folder.

Kinukumpleto nito ang paglikha ng mga susi.

Lumipat tayo sa susunod na artikulo:

Karagdagang impormasyon.