Een virtual private network (VPN) is een vertrouwde, veilige verbinding tussen een lokaal netwerk (LAN) en een ander netwerk. Denk aan uw router als de middelste man tussen de netwerken die je verbinding maakt. Zowel je computer en de OpenVPN server (de router in dit geval) “schudden handen met elkaar” met behulp van certificaten die elkaar valideren. Pas als bij de validatie zowel de client als de server het eens zijn en elkaar vertrouwen, zal de klant toegang krijgen op het netwerk van de server.
VPN software en hardware kost normaal gesproken erg veel geld om deze te deployen. OpenVPN is echter een open-source VPN-oplossing die helemaal gratis is! De Tomato Firmware, die OpenVPN Server ondersteuning heeft, is een perfecte oplossing voor iedereen die gratis een beveiligde verbinding tussen twee netwerken wilt opzetten. In deze blog leg ik uit hoe je OpenVPN opzet tussen je Router met Tomato firmware en je IOS device. Voor meer informatie over OpenVPN kun je het beste de officiële site van OpenVPN bezoeken.
Voor het creëren van de diverse keys gaan we eerst OpenVPN downloaden van de site van OpenVPN. In deze blog ga ik ervan uit dat je de 64-bit versie gebruikt.
Nadat je de software hebt geinstalleerd open je een DOS Command prompt als Administrator en ga je naar c:\Program Files\OpenVPN\easy-rsa en voer het init-config commando uit:
init-config
Open nu de files vars.bat in deze directory met een editor en pas KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG, en KEY_EMAIL waarden aan en save de file.
Ga vervolgens weer naar de DOS Command prompt en typ de volgende commando’s:
vars clean-all build-ca
De meeste waarden kun je zo over nemen. Het is echter belangrijk dat je de ‘Common Name’ invult met een waarde. Kies hiervoor bijvoorbeeld je naam of hostnaam van je server.
build-key-server server
Je kunt hier de default waarden overnemen. Geef echter bij ‘Common Name’ de waarde “server” op. Geef verder “y” op bij de ‘Sign the certificate? [y/n]’ and ‘1 out of 1 certificate requests certified, commit? [y/n]’ vragen.
build-key iPhone
Zorg er weer voor dat de parameter die je meegeeft ook als waarde gebruikt in ‘Common Name’.
build-dh
Hierna kun je de volgende files vinden in je ‘keys’ sub-directory:
Filenaam | Nodig door | Doel | Veilig |
---|---|---|---|
ca.crt | server + alle cliënten | Root CA certificaat | nee |
ca.key | key signing device | Root CA key | ja |
dh{n}.pem | server | Diffie Hellman parameters | nee |
server.crt | server | Server certificaat | nee |
server.key | server | Server key | ja |
iPhone.crt | iPhone client | iPhone certificaat | nee |
iPhone.key | iPhone client | iPhone key | ja |
"C:\Program Files\OpenVPN\bin\openvpn.exe" --pause-exit --verb 3 --genkey --secret "C:\Program Files\OpenVPN\config\key.txt"
Copieer nu de betreffende inhoud van de gegenereerde files (afhankelijk van je Authorization Mode) bij Tomato in de OpenVPN Server naar de Keys sectie volgens onderstaand overzicht:
[See image gallery at eye-vision.homeip.net] Ik heb zelf voor Authorization Mode ‘TLS’ gekozen. Stel in dat geval in je Tomato firmware alles in volgens onderstaande screenshots:
[See image gallery at eye-vision.homeip.net] [See image gallery at eye-vision.homeip.net] [See image gallery at eye-vision.homeip.net] Van de betreffende file hoe je alleen maar het key/certificaat stuk over te nemen.
Tenslotte moet je je OpenVPN server starten door op de [Start Now] button te drukken.
Nu moeten we de configuratie file voor de client gaan creëren. In de directory ‘C:\Program Files\OpenVPN\sample-config\’ kun je voorbeelden vinden. Copieer de file ‘client.ovpn’ naar ‘iPhone.ovpn’ en edit deze in een editor. Pas de waarden voor ‘dev’, ‘proto’, ‘remote’, ‘ca’, ‘cert’ en ‘key’ aan.
############################################## # Sample client-side OpenVPN 2.0 config file # # for connecting to multi-client server. # # # # This configuration can be used by multiple # # clients, however each client should have # # its own cert and key files. # # # # On Windows, you might want to rename this # # file so it has a .ovpn extension # ############################################## # Specify that we are a client and that we # will be pulling certain config file directives # from the server. client # Use the same setting as you are using on # the server. # On most systems, the VPN will not function # unless you partially or fully disable # the firewall for the TUN/TAP interface. ;dev tap dev tun # Windows needs the TAP-Win32 adapter name # from the Network Connections panel # if you have more than one. On XP SP2, # you may need to disable the firewall # for the TAP adapter. ;dev-node MyTap # Are we connecting to a TCP or # UDP server? Use the same setting as # on the server. ;proto tcp proto udp # The hostname/IP and port of the server. # You can have multiple remote entries # to load balance between the servers. remote eye-vision.homeip.net 1194 ;remote my-server-2 1194 # Choose a random host from the remote # list for load-balancing. Otherwise # try hosts in the order specified. ;remote-random # Keep trying indefinitely to resolve the # host name of the OpenVPN server. Very useful # on machines which are not permanently connected # to the internet such as laptops. resolv-retry infinite # Most clients don't need to bind to # a specific local port number. nobind # Downgrade privileges after initialization (non-Windows only) ;user nobody ;group nobody # Try to preserve some state across restarts. persist-key persist-tun # If you are connecting through an # HTTP proxy to reach the actual OpenVPN # server, put the proxy server/IP and # port number here. See the man page # if your proxy server requires # authentication. ;http-proxy-retry # retry on connection failures ;http-proxy [proxy server] [proxy port #] # Wireless networks often produce a lot # of duplicate packets. Set this flag # to silence duplicate packet warnings. ;mute-replay-warnings # SSL/TLS parms. # See the server config file for more # description. It's best to use # a separate .crt/.key file pair # for each client. A single ca # file can be used for all clients. ca ca.crt cert iPhone.crt key iPhone.key # Verify server certificate by checking # that the certicate has the nsCertType # field set to "server". This is an # important precaution to protect against # a potential attack discussed here: # http://openvpn.net/howto.html#mitm # # To use this feature, you will need to generate # your server certificates with the nsCertType # field set to "server". The build-key-server # script in the easy-rsa folder will do this. ns-cert-type server # If a tls-auth key is used on the server # then every client must also have the key. ;tls-auth ta.key 1 # Select a cryptographic cipher. # If the cipher option is used on the server # then you must also specify it here. ;cipher x # Enable compression on the VPN link. # Don't enable this unless it is also # enabled in the server config file. comp-lzo # Set log file verbosity. verb 3 # Silence repeating messages ;mute 20
Installeer nu op je iPhone de OpenVPN App. Je moet ook nog de files ‘iPhone.ovpn’, ‘ca.crt’, ‘iPhone.crt’ en ‘iPhone.key’ op je iPhone krijgen. Dit doe je door in iTunes naar je Device te gaan en in de Apps tab OpenVPN te selecteren. Scroll vervolgens naar beneden en voeg deze files toe aan het File Sharing window. Synchroniseer tenslotte je iPhone met iTunes.
[See image gallery at eye-vision.homeip.net] Druk op de [+] button om je profiel toe te voegen. Vervolgens kun je in het volgende scherm connecten met je OpenVPN server op je router met Tomato firmware.
[See image gallery at eye-vision.homeip.net] Op je iPhone zul je rechtsbovenaan het [VPN] teken zien ten teken dat je via een veilige VPN connectie verbinding maakt met je router thuis.