OpenVPN
OpenVPN is a secure tunnel. I use it to connect to my home network.
OpenVPN uses certificates to both authenticate the client with the server, and the server with the client. The only hard part about OpenVPN is setting up the certificate infrastructure. You need a root certificate (the certificate authority, CA), and certificates for each server and each client, signed by this root certificate.
Setting up a public key infrastructure
The use of client certificates enhances the security, but makes it harder to deploy, as you need to distribute client certificates to each host. You can not use an existing public key infrastructure (PKI); you would allow anyone with a certificate of that PKI to connect to your server (the tls-remote
and tls-verify
options can limits the allowed clients). You either need to to set up your own certificate infrastructure, or limit OpenVPN to use password-based authentication (see the options auth-user-pass-verify
, client-cert-not-required
and username-as-common-name
).
The easiest method it to use easy-rsa, as described in the OpenVPN How-to.
The article Create a OpenVPN Certificate Authority describes the steps in more detail, but basically gives the same result.
Certificates, when deployed correctly, are much more secure than passwords, since the secret (key) does not need to be exchanged or shared between the different hosts. However, doing so requires a security hygiene which may not be required for a small-scale deployment.