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:
Como resolveria este problema para permitir URLs SSL?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.
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:
- que é geralmente encontrado em
/etc/ssl/
se você tiver acesso ao servidor, - ou que podes telecarregamento,
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:
- http://curl.haxx.se/docs/sslcerts.html
- http://curl.haxx.se/mail/archive-2012-01/0049.html
- https://turboflash.wordpress.com/2009/06/23/curl-adding-installing-trusting-new-self-signed-certificate/
- http://curl.haxx.se/docs/caextract.html
- serviço web de certificados autossignado do curl sobre o SSL
Mas nenhuma resposta definitiva até agora: - s