openssl verifica o erro 7 em uma consulta de profundidade: falha na assinatura do certificado

3

Eu instalei o servidor OpenVPN no CentOS . Eu tenho dois clientes - primeiro em CentOS (todos os trabalhos) e tentando conectar o cliente Windows agora.

Gerei certificados do cliente com build-key utility.

Se eu verificar no lado do servidor - tudo parece estar bem:

# openssl verify -CAfile /etc/openvpn/clients/setevoy/ca.crt /etc/openvpn/clients/setevoy/setevoy.crt
/etc/openvpn/clients/setevoy/setevoy.crt: OK

Mas - quando eu verifico os mesmos certificados em Windows - recebi um erro:

$ openssl verify -CAfile ca.crt setevoy.crt
setevoy.crt: /C=UA/ST=CA/L=Kiev/O=Fort-Funston/OU=MyOrganizationalUnit/CN=venti.setevoy.org.ua/name=openvpn_root/[email protected]
error 7 at 1 depth lookup:certificate signature failure

Os arquivos parecem ser idênticos no servidor (de onde eu os copiei) e no cliente Windows (onde eles são colocados em c/Program Files (x86)/OpenVPN/config :

# md5sum /etc/openvpn/clients/setevoy/ca.crt
53984cf44daffb708cdb937fa3d30438  /etc/openvpn/clients/setevoy/ca.crt

$ md5sum ca.crt
53984cf44daffb708cdb937fa3d30438 *ca.crt

# md5sum /etc/openvpn/clients/setevoy/setevoy.crt
c818d312e58db514a9a2afae4c687241  /etc/openvpn/clients/setevoy/setevoy.crt

$ md5sum setevoy.crt
c818d312e58db514a9a2afae4c687241 *setevoy.crt

Suponho que algo está errado com o mecanismo Windows OpenSSL ... ou algo semelhante:

$ head setevoy.crt | grep Signature
    Signature Algorithm: sha256WithRSAEncryption

Então, quando eu tento iniciar o OpenVNP GUI - tem erro:

Wed Dec 17 11:44:25 2014 TLS_ERROR: BIO read tls_read_plaintext error: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed Wed Dec 17 11:44:25 2014 TLS Error: TLS object -> incoming plaintext read error Wed Dec 17 11:44:25 2014 TLS Error: TLS handshake failed

UPD

No servidor:

# openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013

e no cliente Windows :

$ openssl.exe version
OpenSSL 0.9.7l 28 Sep 2006

UPD 2

Eu fiz o upgrade do OpenSSL para OpenVPN GUI , agora é 1.0.1 e verify funciona:

$ ../bin/openssl.exe version
OpenSSL 1.0.1j 15 Oct 2014

$ ../bin/openssl.exe verify -CAfile ca.crt setevoy.crt
setevoy.crt: OK

Mas - ainda não consigo me conectar, com o mesmo erro no log.

Eu também instalei o novo servidor CentOS , apenas para testes, e o cliente OpenVPN - tudo funciona. Problema apenas com o cliente Windows .

    
por setevoy 17.12.2014 / 11:11

2 respostas

0

O OpenSSL 0.9.7 é antigo e não suporta SHA256 e, portanto, não pode verificar o certificado do seu servidor. Você deve atualizar o cliente OpenSSL para pelo menos 0.9.8 (que não é compatível binário, portanto, provavelmente requer recompilação, ou obter uma compilação diferente de, OpenVPN), ou alterar para um certificado de servidor assinado com SHA1-RSA.

"SHA1 é ruim": Navegadores e CAs na Web pública, que conduzem a maior parte do uso de SSL / TLS, estão eliminando vigorosamente certs assinados com SHA1, pois espera-se que cheguem rapidamente ao alcance de ataques de colisão. Mas as VPNs são (geralmente) uma situação controlada em que você executa a CA e há apenas um número modesto de clientes e você os conhece antecipadamente; então você não precisa se preocupar com ataque de colisão e o SHA1 é adequadamente seguro - contanto que você não esteja sujeito a alguma regulamentação ou política que apenas proíba o SHA1 de estar no lado seguro e você não pode obter uma isenção.

Como? Eu não sei onde o OpenVPN / easy-rsa define os parâmetros que o OpenSSL usa para o certsigning (pode estar em um arquivo CONF ou na linha de comando e qualquer um poderia usar um envvar) ; comunidade marcada para que qualquer pessoa possa ajudar facilmente. Se ninguém fizer isso e você apontar para uma versão ou um download específico, posso dar uma olhada.

PS- pode ajudar se você marcar o openvpn especificamente em vez de vpn.

    
por 17.12.2014 / 15:15
0

O problema foi causado pelo Windows OpenSSL , que não funciona com o algoritmo sha256 .

Solução, eu encontrei - edite o arquivo de configuração /etc/openvpn/easy-rsa/openssl-1.0.0.cnf (ou outro, dependendo da versão do OpenSSL no seu servidor), e defina:

default_md      = md5

em vez de

default_md      = sha245

Em seguida, gere novamente todos os certificados e chaves do seu servidor e cliente (incluindo a chave Hoffman).

Depois disso - OpenVPN GUI quase funciona ...

    
por 17.12.2014 / 19:48