A resposta clara é não funciona porque você entendeu tudo errado .
Seu equívoco básico parece estar na ideia de que o OpenVPN e a Autoridade de Certificação têm um canal de comunicação para que o OpenVPN saiba automaticamente quais certificados você deseja permitir. Este não é o caso . O OpenVPN e a Autoridade de Certificação são entidades completamente separadas (mesmo que ambas residam no mesmo host) e não possuem nenhuma comunicação entre si.A CA "assina" solicitações de certificação (basicamente, chaves públicas agrupadas com informações de identificação, como o nome do host), criptografando um hash da solicitação de certificação com sua própria chave privada. O que o OpenVPN faz é verificar se a) ele pode descriptografar o hash usando a chave pública da CA (que normalmente reside em um arquivo ca.crt em algum lugar) e verificar se o hash está correto para o certificado fornecido. Ele não requer nem usa conexões "ao vivo" para a CA para nada disso.
Você não pode revogar um certificado excluindo-o do diretório da CA (observe que, se você excluiu o certificado do cliente e foi sua única cópia, openssl ca
não permitiria mais a revogação) ou a alteração do arquivo index.txt (este arquivo é apenas uma indicação para openssl ca
sobre o estado dos certificados disponíveis). O que você precisa fazer é
- execute
openssl ca -revoke <certificate file>
para revogar o certificado no banco de dados interno OpenSSL CA (basicamente adicionando as informações de revogação noindex.txt
) - crie uma lista de revogação de certificados usando
openssl ca -gencrl -out ca.crl
- copie essa lista de revogação para o arquivo de lista de revogação do OpenVPN (consulte a diretiva
crl-verify
no arquivo de configuração do OpenVPN) - veja o OpenVPN negar a conexão na próxima verificação de certificado
Se você estiver usando o conjunto de scripts de wrapper easy-rsa
definido para OpenSSL CA , consulte o OpenVPN seção sobre revogação de certificados para uma documentação mais detalhada sobre como alcançar o acima usando os scripts easy-rsa. O procedimento básico é
# cd into the easy-rsa directory
cd <somewhere>/easy-rsa
# load your CA-related variables into the shell environment from the ./vars file
. ./vars
# run the revoke script for <clientcert.pem>
./revoke-full clientcert
você encontrará o crl.pem no diretório $KEY_DIR
, conforme definido no arquivo ./vars
.