Isso foi movido do NetworkEngineering.
Eu usei este guia do DigitalOcean (doravante "guia") para configurar um serviço OpenVPN (v2.3.10, OpenSSL 1.0.2g) há vários meses. Funcionou sem problemas e é mais rápido que o nosso antigo appliance de VPN. Eu estou em um ponto agora onde eu preciso revogar um certificado. Segui os passos no passo 14 do guia e em esta página sem qualquer sorte.
Eu adicionei crl-verify $SomeSuchDir/crl.pem
(onde $SomeSuchDir
é qualquer um dos caminhos '/ etc / openvpn', '/ root / openvpn-ca / keys' e null (como indicado no guia)) para o arquivo de configuração , reiniciou o serviço e nenhum dos certificados funciona, válido ou revogado. Com a opção crl-verify crl.pem
habilitada, recebo este erro
"TLS_ERROR: BIO lida com o erro tls_read_plaintext: erro: 14089086: rotinas SSL: ssl3_get_client_certificate: verificação de certificado com falha"
quando um certificado válido ou revogado tenta se conectar. Quando eu comentar a opção e reiniciar o serviço, ainda posso me conectar com um certificado aparentemente revogado. O arquivo "index.txt" tem um campo 'R' e um campo adicional para o certificado revogado e recebo a mensagem "erro 23" quando executo o script revoke-full bad-cert
.
Eu dei uma olhada no script revoke-full, no arquivo vars variable e no arquivo openssl-1.0.0.cnf, e parece que tudo está onde deveria estar. Alguém mais teve um problema ao gerar uma CRL para o OpenVPN?
ATUALIZAÇÃO:
Depois de mover isso do NetworkEngineering, procurei no arquivo de log e encontrei CRL: cannot read CRL from file $SomeSuchDir/crl.pem
. O arquivo era pelo menos legível pelo mundo. Eu encontrei este post , onde o autor teve problemas semelhantes. Sua solução foi comentar as duas linhas que executam o serviço OpenVPN como nobody: nogroup. Embora o meu arquivo crl.pem fosse legível por todos, os diretórios ancestrais têm que ser pelo menos "r-x" para nobody: nogroup. Meus arquivos estavam todos dentro de / root, então isso era inacessível para ninguém: nogroup.
Eu criei / REV e coloquei o crl.pem dentro dele, e não fiz ninguém: nogroup o dono. Alterei a opção de configuração para crl-verify /REV/crl.pem
e reiniciei o serviço. Os certificados revogados parecem não ser permitidos e os certificados válidos são permitidos.
Eu passei por outra rodada de conexão com outro certificado a ser revogado. Eu fiz ./revoke-full cert-to-be-revoked
, recebi as mensagens apropriadas "erro 23 ..." e "Banco de dados atualizado", copiei $ KEY_DIR / crl.pem para / REV /, telnettei para a interface de gerenciamento, executei kill cert-to-be-revoked
e o cliente pôde se reconectar. Verifiquei o certificado revogado e o número de série correspondente estava em "Revoked Certificates:" com openssl crl -in crl.pem -text
.
Então agora a questão é, é seguro rodar o (s) serviço (s) OpenVPN como root: root ao invés de nobody: nogroup?
Tags vpn openvpn ssl-certificate crl