Comando de curva para https (SSL)

estou a tentar executar o seguinte comando de curva, mas estou a obter um erro de certificado SSL:

curl https://example.com:8443/cli/agentCLI -u username:password

erro:

Curl: (60) problema do certificado SSL, verifique se o certificado da AC está OK. Informacao: erro: 14090086: rotinas SSL: SSL3_GET_SERVER_CERTIFICATE:a verificação do certificado foi mal-sucedida Mais detalhes aqui: http://curl.haxx.se/docs/sslcerts.html

o Curl efectua a verificação por omissão do certificado SSL, utilizando um "pacote" of Certificate Authority (CA) chaves públicas (certs CA). Padrao o bundle chama-se curl-ca-bundle.crt; poderá indicar um ficheiro alternativo usando a opção -- cacert. Se este servidor de HTTPS usar um certificado assinado por uma AC representada em o pacote, a verificação do certificado provavelmente falhou devido a um problema com o certificado (pode estar expirado, ou o nome pode não corresponde ao nome do domínio no URL). Se quiser desligar a verificação do curl do certificado, use o-k (ou -- inseguro) Opcao.

Como resolveria este problema para permitir URLs SSL?

Author: jww, 2015-03-08

1 answers

Se estiver a usar um certificado autossignado no servidor, pode usar:

curl -k https://example.com:8443/cli/agentCLI -u username:password

Mas esteja ciente de que então não é melhor do que usar conexão não SSL para o servidor, como sua comunicação não será mais segura, permitindo todos os tipos de homem nos ataques do meio.

Embora o meu conselho para ti seja descarregar o .pem do servidor:

Usando:

echo "HEAD / HTTP/1.0\n Host: example.com\n\n EOT\n" | openssl s_client -prexit -connect example.com:8443 > cert.pem

Para o seu computador, mantenha apenas a parte entre BEGIN CERTIFICATE e END CERTIFICATE dentro do ficheiro (incluindo as linhas de início / fim) e dê-o como parâmetro para a opção --cacert, Você também poderá descarregá-lo. Então você vai ter que autenticar seu servidor cada vez que você se conectar!

curl --cacert cert.pem https://example.com:8443/cli/agentCLI -u username:password

Testando no meu próprio servidor autossignado, está a funcionar bem.
% openssl s_client -showcerts -connect example.com:443 </dev/null 2>/dev/null | sed -n '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p' | grep -m1 -B-1 -- '-----END CERTIFICATE-----'  > cert.pem
% curl --cacert cert.pem https://example.com

Para um exemplo que deveria estar a funcionar:

% openssl s_client -showcerts -connect git.cryptolib.org:443 </dev/null 2>/dev/null | sed -n '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p' | grep -m1 -B-1 -- '-----END CERTIFICATE-----'  > cert.pem
% curl --cacert cert.pem https://git.cryptolib.org
curl: (51) SSL: certificate verification failed (result: 5)
Mas infelizmente é nao.

Eu também tentei fazer, como sugerido aqui:

% openssl x509 -inform PEM -in cert.pem -text -out certdata.pem
% curl --cacert certdata.pem https://git.cryptolib.org

Que não está a funcionar, porque esse site (git.cryptolib.org) eu estou usando para testar não é auto-assinado, mas é a partir da cadeia de CACert,que pode ser resolvido usando os certificados de raiz de CACert, seguindo este FAQ .


Alguns recursos para dig:

Mas nenhuma resposta definitiva até agora: - s

 12
Author: zmo, 2017-05-23 12:34:11