User Tools

Site Tools


doc:appunti:linux:sa:openvpn

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
doc:appunti:linux:sa:openvpn [2009/05/13 12:16] niccolodoc:appunti:linux:sa:openvpn [2018/01/01 07:30] – [Rinnovo del certificato del server] niccolo
Line 13: Line 13:
 default_crl_days               = 1095     # how long before next CRL default_crl_days               = 1095     # how long before next CRL
 default_bits                   = 2048 default_bits                   = 2048
 +
 +[ req_distinguished_name ]
 countryName_default            = IT countryName_default            = IT
 stateOrProvinceName_default    = Italy stateOrProvinceName_default    = Italy
Line 82: Line 84:
 # File containing Diffie Hellman parameters in .pem format # File containing Diffie Hellman parameters in .pem format
 # Diffie Hellman parameters may be considered public. # Diffie Hellman parameters may be considered public.
-# Generated by: openssl dhparam -out server.rigacci.org_dh1024.pem 1024+# Generated by: openssl dhparam -out ssl/server.rigacci.org_dh1024.pem 1024
 dh ssl/server.rigacci.org_dh1024.pem dh ssl/server.rigacci.org_dh1024.pem
  
Line 192: Line 194:
 </code> </code>
  
-===== Revoca di una chiave =====+===== Revoca di un certificato client (chiave=====
  
 Qualora si voglia impedire l'accesso ad un client (oppure se la sua chiave è stata compromessa), si revoca... Qualora si voglia impedire l'accesso ad un client (oppure se la sua chiave è stata compromessa), si revoca...
  
 <code> <code>
-openssl ca -config ssl/openssl.cnf -keyfile ssl/private/rigacci.org_cakey.pem \ +openssl ca -config ssl/openssl.cnf 
-    -cert ssl/rigacciorg_cacert.pem -revoke niccolo@rigacci.org_cert.pem+    -cert ssl/rigacciorg_cacert.pem -keyfile ssl/private/rigacci.org_cakey.pem \ 
 +    -revoke niccolo@rigacci.org_cert.pem
 </code> </code>
  
Line 206: Line 209:
  
 <code> <code>
-openssl ca -config ssl/openssl.cnf -gencrl -keyfile ssl/private/rigacci.org_cakey.pem \ +openssl ca -config ssl/openssl.cnf 
-    -cert ssl/rigacci.org_cacert.pem -out ssl/rigacci.org_crl.pem+    -cert ssl/rigacciorg_cacert.pem -keyfile ssl/private/rigacci.org_cakey.pem \ 
 +    -gencrl -out ssl/rigacci.org_crl.pem
 </code> </code>
  
Line 271: Line 275:
 </file> </file>
  
 +===== Rinnovo del certificato del server =====
 +
 +Quando **scade il certificato del server smettono di funzionare TUTTE le VPN**. Per fortuna è sufficiente rinnovare tale certificato e **non è necessario distribuirlo** su tutti i client. La procedura che segue genera una nuova chiave e un nuovo certificato firmato dalla stessa CA locale.
 +
 +Il discorso è diverso quando **scade il certificato della CA** locale, in questo caso per ripristinare il funzionamento delle VPN senza distribuire il nuovo CA cert è necessario utilizzare un trucco: generare un nuovo CA cert, ma riutilizzando la vecchia chiave . La soluzione (da verificare) è descritta nel post [[ https://serverfault.com/questions/306345/certification-authority-root-certificate-expiry-and-renewal|Certification authority root certificate expiry and renewal]]. Altri dettagli si trovano nel post [[https://forums.openvpn.net/viewtopic.php?t=18671|Expired CA - clients can't connect]].
 +
 +**ATTENZIONE** ai nomi dei file, che sono **diversi rispetto agli esempi riportati sopra**; tutto è stato eseguito nella directory **/etc/openvpn/ssl/**. La seguente ricetta è stata verificata su Debian 8 Jessie. [[https://it.wiktionary.org/wiki/YMMV|YMMV]]!
 +
 +Anzitutto si deve **revocare il vecchio certificato**, altrimenti al momento della firma del nuovo si ottiene l'errore:
 +
 +<code>
 +failed to update database
 +TXT_DB error number 2
 +</code>
 +
 +infatti il nuovo certificato avrà lo stesso nome del vecchio. Dopo aver revocato un certificato si deve sempre rigenerare la CRL lista dei certificati revocati. **ATTENZIONE** a individuare il corretto certificato! Nel nostro esempio è **00.pem**, ma si deve verificare il file **index.txt** e i file nella directory **newcerts/**:
 +
 +<code>
 +# Revoke old certificate.
 +openssl ca -config openssl.cnf -keyfile private/vpn.rigacci.org_cakey.pem \
 +    -cert vpn.rigacci.org_cacert.pem -revoke newcerts/00.pem
 +# Generate the new CRL.
 +openssl ca -config openssl.cnf -gencrl -keyfile private/vpn.rigacci.org_cakey.pem \
 +    -cert vpn.rigacci.org_cacert.pem -out vpn.rigacci.org_crl.pem
 +</code>
 +
 +Alla richiesta di **A challenge password** e **An optional company name** si è lasciata una risposta vuota.
 +
 +Il vecchio certificato può essere salvato o rimosso:
 +
 +<code>
 +mv private/vpn.rigacci.org_key.pem private/vpn.rigacci.org_key.pem.expired
 +mv vpn.rigacci.org_cert.pem vpn.rigacci.org_cert.pem.expired
 +</code>
 +
 +Ecco quindi la **generazione del nuovo certificato** con la relativa richiesta di firma CSR, seguita dalla **firma da parte della CA**:
 +
 +<code>
 +openssl req -config openssl.cnf -nodes -new \
 +     -keyout private/vpn.rigacci.org_key.pem -out vpn.rigacci.org_csr.pem
 +chmod 0600 private/vpn.rigacci.org_key.pem
 +openssl ca -config openssl.cnf -in vpn.rigacci.org_csr.pem -cert vpn.rigacci.org_cacert.pem \
 +    -keyfile private/vpn.rigacci.org_cakey.pem -out vpn.rigacci.org_cert.pem
 +rm vpn.rigacci.org_csr.pem
 +</code>
doc/appunti/linux/sa/openvpn.txt · Last modified: 2020/02/24 17:59 by niccolo