
Executamos servidores OpenVPN em várias instâncias com escalonamento automático (para redundância e autocorreção), portanto, eles são provisionados de maneira com script. Nossa abordagem para gerenciar certificados de clientes nessas instâncias efêmeras é bastante desajeitada e atualmente envolve a extração de um tarball para o /etc/openvpn/easy-rsa/pki
diretório.
Gostaria de mover apenas os certificados do cliente para um diretório de rede compartilhado, mas não consegui descobrir quais configurações informam o openvpn sobre esses subdiretórios pki. ( ca/cert/key/dh
Todas as configurações apontam profundamente na hierarquia, ou seja /etc/openvpn/easy-rsa/pki/issued/server.crt
, o que implica para mim que não haveria nenhuma suposição interna sobre a estrutura de diretórios easy-rsa.)
Como o openvpn encontra esses arquivos?
Responder1
Olá e obrigado pela pergunta...
É um pouco mais fácil do que você pensa ;-). Você não precisa de todos os certificados de cliente. Certificados de cliente são necessários para o cliente...
Ao lado do arquivo de configuração existem 3-4 arquivos gerados e "vinculados" que podem ser incorporados diretamente como seção no arquivo de configuração (estes são tudo que você precisa ter no servidor/cliente).
- Chave TLS (opcional, mas não é ruim de usar ;-))
Esta é uma chave compartilhada para proteger a comunicação antes mesmo de iniciar o tráfego específico do cliente - sem conhecer esta chave o servidor simplesmente ignora sua comunicação. Este arquivo é o mesmo no servidor e no cliente
Autoridade de certificação CA qual é o certificado usado para confirmar a confiança do lado remoto.
servidor: Certificado da autoridade que emite o certificado do cliente. ISTO é o que você está procurando - pois este arquivo pode ser usado para verificar TODOS os certificados de clientes emitidos durante a conexão. Este único arquivo pode ser usado para verificar certificados atuais e também futuros emitidos pela mesma CA (que é o que é coberto pelo easy-rsa)
cliente: este arquivo é usado para verificar se o certificado do servidor é confiável. Pode ser o mesmo que no lado do servidor, mas tecnicamente o certificado do servidor pode ser emitido por uma CA diferente dos certificados dos clientes.
chave
chave privada usada para proteger a comunicação. Este arquivo deve ser mantido seguro, pois é o arquivo que confirma sua identidade.
- certificado
certificado (chave pública “embrulhada” com informações adicionais relacionadas à Autoridade Certificadora em estrutura X.509). Este arquivo pode até estar disponível publicamente, pois é usado apenas para verificar a validade da comunicação (que a chave usada para a assinatura é realmente "aquela" confiável).
Como você mencionou easy-rsa, o CA é provavelmente o mesmo para o cliente e o servidor. Depois de ter uma chave TLS comum, um arquivo CA comum e uma chave própria com o certificado correspondente, você terá tudo o que precisa para que funcione.
Depois de gerar a chave e o certificado para o usuário e entregá-los ao usuário (ou pelo menos enviá-los), você não precisará mais deles e essa chave + certificado do usuário poderá até ser excluída do servidor ...
Na "grande" Autoridade de Certificação, a chave do usuário nem é conhecida pelo servidor emissor, pois a solicitação de certificação contém a chave pública (informações derivadas da chave privada), que é necessária para criar o certificado assinado - a chave é gerada no lado do cliente e nunca deixe isso pelo processo...