The Information Systems and Computer Applications examination covers material that is usually taught in an introductory college-level business information systems course.

Revocar certificados en OpenVPN

En un servidor OpenVPN queremos poder cear certificados pero también revocarlos para evitar que un determinado cliente pueda volver a conectarse.

Para ello, el script revoke-full de easy-rsa nos permite gestionar la lista de revocación:

# source ./vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /usr/local/etc/openvpn/easy-rsa/2.0/keys
# ./revoke-full casa.systemadmin.es
Using configuration from /usr/local/etc/openvpn/easy-rsa/2.0/openssl.cnf
Revoking Certificate 04.
Data Base Updated
Using configuration from /usr/local/etc/openvpn/easy-rsa/2.0/openssl.cnf
casa.systemadmin.es.crt: /C=CAT/ST=BARCELONA/L=Barcelona/O=systemadmin.es/CN=casa.systemadmin.es/emailAddress=jordi@systemadmin.es
error 23 at 0 depth lookup:certificate revoked

Esto genera un fichero crl.pem dentro del directorio de keys que deberá usar OpenVPN para ver si el certificado con el que se intenta conectar un cliente esta revocado o no:

# cat keys/crl.pem
-----BEGIN X509 CRL-----
MII0caCB2zANBgrqhkiG9w0B0QQFADCBxTELM0kCA1UEBhMCRVMxEjAQBbNVBAgT
CUJ0UaNFTE9OQTrSMBAGA1UBmxMJQmFyx2Vsb05CMRcwFQYDVQQKEw5zebN0ZW1h
ZG10ba5lczEgMBrGA1UEAxMBcxFwbGEux2Euc0lCdGVtYWd93d4uZXMxIbAhBgkq
hki09a0BCQEWFGrvcmRpQHNBcxRlbWFkxWluL0VCFw0xMzA5MzAwNzUyMblaFw0x
MzE0MaAwNzUyMzraMBQwEgIBBxcNMTMwxTMwM0cCMjM5WjANBiiiiiiG9b0BAQQF
AAO0gaDN9AfSLdr9O5qJKt1B7xf/da95xvHpt0oCCMZ5mgcnsvL8bk2JhbR5HE5u
XlJ0Ra5M/3nSlprudUTFH6CBZxDIK52gx6pMh0HCWbVgrRM6MAXhk0WY8bI02/I3
YJt0la4rBcgHUIruVR7QP/lBvx4OfZZPxpEaH00CU0g6xjFPDg==
-----END X509 CRL-----

Dicho fichero deberá estar dentro del chroot, si lo tenemos, sino al conectar un cliente dará un error y se apagará el servidor:

Sep 30 07:58:22 qapla openvpn[7526]: 1.2.3.4:1025 CRL: cannot read: /usr/local/etc/openvpn/keys/crl.pem: No such file or directory (errno=2)

Podemos crear un hardlink entre el fichero crl.pem dentro del directorio de keys y el chroot:

# ln /usr/local/etc/openvpn/keys/crl.pem /usr/local/etc/openvpn/chroot/

Y a continuación dar la ruta absoluta desde el chroot, por ejemplo:

chroot /usr/local/etc/openvpn/chroot
crl-verify /crl.pem

En caso de no usar chroot, simplemente debemos indicar el path completo:

crl-verify /usr/local/etc/openvpn/keys/crl.pem

Una vez reiniciado el servidor veremos que a cada cliente que se conecte se realizará la verificación:

Sep 30 08:02:29 qapla openvpn[8886]: 1.2.3.4:1025 CRL CHECK OK: /C=CAT/ST=BARCELONA/L=Barcelona/O=systemadmin.es/CN=picamoixons.systemadmin.es/emailAddress=jordi@systemadmin.es

Tags:

Relacionados

Revocar certificados en OpenVPN was first posted on September 30, 2013 at 9:26 am.

Comments are closed.