PKI
previa
orientado a la instalación de un openvpn
creación de los siguientes elementos:
-
SERVER certificate + key
CLIENT certificate + key
usando la herramienta easy-rsa
CA
se recomienda crear todos estos ficheros en un servidor standalone / offline de la insfraestructura que se monte
editar fichero vars (vars.example) para adecuar los valores (y hacer source vars
)
./easyrsa init-pki
./easyrsa build-ca
(opcionalmente, nopass)
Deffie-Hellman
usado para el intercambio de llaves y firma HMAC, añadiendo una capara se seguridad adicional
./easyrsa gen-dh
generar HMAC: openvpn –genkey –secret ta.key
servidor
./easyrsa gen-req server1 nopass
server1 es el nombre que le asignamos
nopass para que no nos solicite la contraseña al arrancar (openvpn server)
genera server1.key (copiar en /etc/openvpn/) y server1.req
importar (en caso que la PKI la tengamos en otra máquina) la requests del servidor: ./easyrsa import-req server1.req server1
server1.req es el fichero creado
server1 nombre del servidor
este comando copia el fichero server1.req en pki/reqs
firmar la request: ./easyrsa sign-req server server1
el primer argumento puede ser server o client
el segundo argumento es el short name de la entidad servidor
genera un archivo server1.crt
configuración servidor
copiar el fichero de configuración de ejemplo desde /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf
ajustar los valores de las llaves:
ca
cert
key
dh
tls-auth
ajustar valores de redirección, si procede
push «redirect-gateway»
push «dhcp-option»
ajustar usuario y grupo (por nobody:nogroup o uno a medida)
user nobody
user nogroup
ajustar seguridad:
auth SHA256
algo parecido a esto:
port 1194
proto udp
dev tun
ca ca.crt
cert server1.crt
key server1.key # This file should be kept secret
dh dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3
explicit-exit-notify 1
auth SHA256
cliente
./easyrsa gen-req client1 nopass
client1 es el nombre del fichero que generamos y el Common Name que nos sugiere
nopass para que no nos solicite la contraseña al accedr
genera ./pki/private/client1.key y ./pki/reqs/server1.req
importar (en caso que la PKI la tengamos en otra máquina) la requests del cliente: ./easyrsa import-req client1.req client1
client1.req es el fichero creado
client1 nombre del servidor
este comando copia el fichero client1.req en pki/reqs
firmar la request: ./easyrsa sign-req client client1
el primer argumento puede ser server o client
el segundo argumento es el short name de la entidad cliente
genera un archivo client1.crt
AWS ACM
Para poder importar esta PKI y usarla en AWS (para crear un VPNEndPoint, por ejemplo), es necesario importar los siguientes archivos:
./pki/issued/server1.crt en cuerpo del certificado
./pki/private/server1.key en la clave privada del certificado
./pki/ca.crt en la cadena de certificados