Desde la versión 2.4, OpenVPN ha cambiado su sistema de generación de certificados a EasyRSA 3. El sistema para configurarlo es diferente y hoy os explicamos todo el proceso de la instalación y configuración del servidor en Windows.
Paso 1: Instalación de OpenVPN.
- Lo primero que debemos hacer es descargar el programa de OpenVPN. Puedes hacerlo aquí.
- Ejecuta el programa de instalación y pincha en las opciones de configuración personalizada. Tienes que marcar OpenVPN Service e EasyRSA 3 certificate management scripts. El primero instala el servicio para poder luego arrancar el programa con Windows, el segundo instala el generador de certificados.
Paso 2: configura la plantilla de certificados.
Una vez instalado el programa, abre un terminal con permisos de administrador y ve a C:\Program Files\OpenVPN\easy-rsa
- Ejecuta el siguiente fichero (escribe y pulsa Enter). Verás que al ejecutarlo entra en una especie de consola. Siempre que queramos hacer comandos de easyrsa hay que arrancar este bat para que entre en el shell.
EasyRSA-Start.bat
- Inicializamos en el directorio la Public Key Infrastructure (PKI).
./easyrsa clean-all
./easyrsa init-pki
Ahora hay que editar, si quieres, el fichero vars.bat con el editor de notas o con el Wordpad. Hay uno de ejemplo, cambia el nombre o cópialo a vars.bat. Es la plantilla que se va a usar para la generación de certificados y debemos poner varios valores. Puedes hacerlo desde terminal escribiendo notepad vars.bat.
Tienes que modificar y poner los siguientes valores (los de cursiva son ejemplos, pon los tuyos):
set_var EASYRSA_REQ_COUNTRY "ES"
set_var EASYRSA_REQ_PROVINCE "Madrid"
set_var EASYRSA_REQ_CITY "Madrid"
set_var EASYRSA_REQ_ORG "Tu empresa (puedes dejar OpenVPN)"
set_var EASYRSA_REQ_EMAIL "tucorreo@tudominio.es"
set_var EASYRSA_REQ_OU "Tu unidad organizativa, si no sabes pon la empresa"
Tú decides si quieres cambiar el valor del parámetro Diffie Hellman (no es necesario).
set_var EASYRSA_KEY_SIZE 2048
Paso 3. Genera los certificados y llaves del servidor y de los usuarios.
En estos pasos, la opción nopass es para que no pregunte la contraseña. En el servidor no conviene ponerla (puedes), en los clientes puedes añadirla si quieres más seguridad…pero también hará que sea menos amigable porque cada vez que haya que firmar te pedirá la clave. Tú decides. Si quieres clave no pongas nopass.
Primero generamos la entidad certificadora.
./easyrsa build-ca nopass
Te va a preguntar el nombre de tu servidor.
Esto crea dos ficheros:
- ca.crt: Es la clave pública. Por eso hace falta que esté tanto en el servidor como en los clientes.
- ca.key. Es la clave privada RSA que se usa para firmar los certificados, y sólo debe estar en el servidor.
Ahora creamos el certificado y la llave del servidor.
./easyrsa build-server-full server nopass
Ahora puedes generar las claves de los clientes.
./easyrsa build-client-full Client1 nopass
Client1 lo debes sustituir por el CN de tus usuarios (yo uso sus nombres de usuario).
NOTA: si luego queremos volver, otro día, a ejecutar este comando para generar los certificados de cliente, recuerda que tenemos que ejecutar el EasyRSA-Start.bat para entrar en el shell de RSA.
Genera los parámetros Diffie Hellman:
./easyrsa gen-dh
Este último paso es opcional, pero aumenta la seguridad. Generamos una clave TLS (fichero que debe tener tanto el servidor como los clientes).
Ejecútalo en el directorio /bin de openvpn y te crea ahí el fichero.
openvpn --genkey secret ta.key
Paso 4. Obtención de ficheros.
Con los pasos anteriores se han generado los siguientes ficheros que necesitaremos (rutas desde easy-rsa):
- pki/dh.pem (fichero para la carpeta de configuración del servidor)
- pki/ca.crt (fichero para el servidor y clientes)
- pki/private/server.key (para el servidor)
- pki/issued/server.crt (para el servidor)
- pki/private/cliente1.key (para la carpeta del cliente)
- pki/issued/cliente1.crt (para la carpeta del cliente)
- bin/ta.key (tanto para el servidor como para los clientes)
Paso 5. Configuración final del servidor.
Esta última parte es exactamente igual que la Configuración final del servidor de la versión anterior que podéis ver aquí (ten en cuenta que el fichero ahora es dh.pem y no dh2048.pem).
Con eso ya estaría la parte del servidor. Inicializa el programa, dale a Connect y mira si se conecta en verde.
Nota: si queréis abrir en el firewall tam´bien podéis hacer:
netsh advfirewall firewall add rule name="OpenVPN" dir=in localport=1194 remoteport=any protocol=UDP action=allow remoteip=any localip=any
Después, podéis seguir esta configuración para los clientes.
Os recomendamos los siguientes productos relacionados con la informática:
Buenas tardes, estoy leyendo vuestra publicación y en tiempo configure un servidor openvpn con vuestra ayuda, pero creaba los clientes de la siguiente forma build-key-pass nombredelcliente para que cuando el cliente se conectara pusiera la contraseña, ahora con esta nueva forma como se haria, ./easyrsa build-client-full Client1 nopass, el build-client-full que significa? y si quiera que pidiera contraseña como se haria
Saludos y gracias por los aportes
Como sabes los usuarios pueden conectarse a openvpn si contraseña, luego les pide contraseña (de AD por ejemplo) para acceder a los recursos. Si quieres poner una contraseña para permitirles o no usar openvn pon ./easyrsa build-client-full Client1. Es una medida adicional de seguridad.
En la mayoría de los casos no lo veo necesario, y es un engorro de gestionar porque no va por AD. Así que yo uso ./easyrsa build-client-full Client1 nopass para que no pida es contraseña, y sólo pida la de los recursos.
Respecto al full, no me lo he planteado. Es el comando a usar y no he investigado opciones.
Muchisimas gracias, al final lo he realizado como me has aconsejado, pero una cosa curiosa, he creado el archivo vars.bat y he realizado todos los pasos, cuando veo el certificado en el emisor no me pone los valores que he modificado en el archivo vars.bat. lo de cn, email, etc, solo me pone el nombre de la CA que lo ha firmado, vamos que luego los clientes se conectan perfectamente y he realizado una revocación de un certificado para probar y no se conecta, asi que no hare mucho caso en eso. con vuestras indicaciones he vuelto a nos conectemos por RDP de nuevo.