Openvpn CRL has expired —
In questo periodo folle in cui 3/4 del mondo è in isolamento la stragrande maggioranza dei colleghi lavora da casa via VPN, chi collegandosi via RDP alla propria macchina in ufficio, chi con una macchina dell’ufficio che si è portata a casa e quindi si collega sempre VPN al DB del gestionale e alle risorse a cui ha accesso normalmente.
Come ho spiegato qui lo scorso anno al cambio fisico dei server abbiamo riscritto completamente le VPN e nell’ultimo mese ho dovuto attrezzare un bel numero di client, e per un misterioso motivo che non ho ancora capito ma che onestamente non ho ne tempo ne voglia di indagare ho dovuto revocare una serie di credenziali farlocche o meglio che non volevano saperne di andare, la chiave sta appunto in questa azione di revoca.
Ieri nel pomeriggio telefonate sms skype da tutti i colleghi che lavoravano da casa e che mi dicono va che la VPN non funziona.
Riavvio i bastion hosts convinto che il problema sia di nat ma non si risolve guardo quindi i log della VPN e trovo un agghiacciante:
Thu Apr 2 14:07:09 2020 Socket flags: TCP_NODELAY=1 succeeded
Thu Apr 2 14:07:10 2020 192.168.2.240:17916 TLS: Initial packet from [AF_INET]192.168.2.240:17916, sid=33406af4 0b210143
Thu Apr 2 14:07:10 2020 192.168.2.240:17916 VERIFY ERROR: depth=0, error=CRL has expired: C=IT, ST=MI, L=Inveruno, O=Myfirm S.p.A, OU=Systems & Network Unit, CN=client32, name=EasyRSA, emailAddress=sysadmin@myfirm.com
Thu Apr 2 14:07:10 2020 192.168.2.240:17916 OpenSSL: error:14089086:SSL routines:ssl3_get_client_certificate:certificate verify failed
Thu Apr 2 14:07:10 2020 192.168.2.240:17916 TLS_ERROR: BIO read tls_read_plaintext error
Thu Apr 2 14:07:10 2020 192.168.2.240:17916 TLS Error: TLS object -> incoming plaintext read error
Thu Apr 2 14:07:10 2020 192.168.2.240:17916 TLS Error: TLS handshake failed
Thu Apr 2 14:07:10 2020 192.168.2.240:17916 Fatal TLS error (check_tls_errors_co), restarting
Thu Apr 2 14:07:10 2020 192.168.2.240:17916 SIGUSR1[soft,tls-error] received, client-instance restarting
CRL has expired??? WTF
Googlo rapidamente e trovo che qualcuno già si è trovato in questa situazione, in buona sostanza quando ho revocato le credenziali farlocche ho fatto partire un counter che a oggi ha bloccato tutto e il problema è sulla revoca dei certificati.
Commento le righe sui server che si occupano di questa verifica e rilancio il demone funziona tutto ma non è cosi deve andare, vado a fondo della faccenda e trovo questo bel link volano bestemmie da scomunica, e maledizioni varie e assortite ai developer.
Il file crl.pem si rigenera ogni volta che revochi un certificato quindi la soluzione è la seguente editare il file /etc/openvpn/easy-rsa/openssl.cnf e cambiare le due righe seguenti in questo modo:
default_days = 3650 # how long to certify for
default_crl_days= 3650 # how long before next CRL
la seconda di default ha 30 ed è questo che ha generato il massacro.
A questo punto creo una serie di credenziali fittizie che poi vado a revocare in modo che il controllo vada a 3650 giorni, quindi . ./vars quindi ./build-key pippo genero il tutto e a seguire ./revoke-full pippo che revoca i certificati (per non sbagliare mai cd keys e rm pippo.*) a questo punto il conteggio riparte e durerà 10 anni.
Categorised as: Linux | Networking | Work
Comments are disabled on this post