Como posso fazer o OpenVPN usar os pontos de distribuição da CRL da minha CA ao verificar os certificados?

1

Eu tenho uma PKI existente na qual estou tentando integrar um servidor OpenVPN. Eu incluí Pontos de Distribuição de CRL em cada certificado de CA em minha cadeia e publico as CRLs em um local que pode ser acessado pelo meu servidor OpenVPN.

O problema é que o servidor OpenVPN parece ignorar completamente a extensão Pontos de distribuição da CRL em favor de sua própria opção --crl-verify . Se eu revogar um certificado para um usuário e publicar uma nova CRL, o OpenVPN continuará feliz em permitir que o cliente se conecte. Não entendo por que o OpenVPN não lê essas extensões, já que elas foram adicionadas exatamente para esse propósito.

Eu só consigo pensar em duas formas alternativas de verificar minhas CRLs:

1) Eu posso ter um cronjob que copie as CRLs para o servidor OpenVPN e use a opção --crl-verify . Mas desde que eu tenho uma cadeia de CAs, como faço para obter todas as CRLs em um arquivo? Se eu usar o modo de pasta de --crl-verify , será um problema que cada CA na cadeia tenha seu próprio esquema de número de série?

2) Eu tentei evitar chamar qualquer script externo em favor de usar apenas coisas internas sob a suposição de que quanto mais eu faço manualmente, maior a probabilidade de eu introduzir uma falha de segurança. Estou errado? Está escrevendo meu próprio script para verificar minhas CRLs a opção correta?

Existe alguma maneira de obter o OpenVPN para verificar os Pontos de Distribuição de CRL incluídos na minha cadeia de certificados, de preferência usando um mecanismo incorporado no próprio OpenVPN?

EDIT: Também seria bom saber se há alguma maneira de fazer isso no lado do cliente também (ou seja, para os clientes verificarem a validade do certificado do servidor OpenVPN). Seria muito mais simples se --crl-verify obtivesse uma URL.

    
por succulent_headcrab 05.06.2017 / 20:30

1 resposta

2

Acredito que você esteja certo de que o OpenVPN não possui essa funcionalidade.
Quanto ao porquê, eu não tenho outra resposta senão a sensação geral de que o OpenVPN é mais comumente configurado com suas próprias versões simplistas de easy-rsa para uma PKI dedicada.

Não parece que --crl-verify ... seria legal com CRLs para várias CAs.

No entanto, se você usar --capath dir em vez de --ca file para configurar suas CAs, a opção capath espera o certificado da autoridade de certificação e a CRL nesse diretório. Acredito que esta seria a opção viável se você exportar regularmente as CRLs para o servidor OpenVPN.

A outra opção, e eu concordo que você deve ter cuidado com a forma como ela é implementada, seria enganchar em um script.
Você pode usar o --tls-verify cmd hook combinado com --tls-export-cert directory e a variável de ambiente peer_cert .
Isso permitiria que seu script personalizado, com o certificado do par em mãos, tivesse a palavra final se o handshake TLS fosse bem-sucedido ou não.

(Veja as opções de configuração acima mencionadas em o manual para detalhes.)

    
por 05.06.2017 / 21:38

Tags