O curl tem uma opção --no-check-certificate como o wget?

447

Estou tentando fazer uma solicitação de ondulação para um de nossos servidores de desenvolvimento local executando um site de desenvolvimento com um certificado SSL autoassinado. Estou usando curl na linha de comando.

Vi algumas postagens de blog mencionando que você pode adicionar à lista de certificados ou especificar um certificado específico (autoassinado) como válido, mas existe uma maneira geral de dizer "não verifique" o certificado ssl - como --no-check-certificateaquele wget tem?

cwd
fonte
1
--insecurenão funcionará se você tiver determinadas versões do php ou apache, conforme detalhado em superuser.com/questions/1015325/…
user3338098

Respostas:

596

Sim. Na página de manual :

-k, --inseguro

(TLS) Por padrão, todas as curvas de conexão SSL são verificadas como seguras. Esta opção permite que a ondulação continue e opere mesmo em conexões com o servidor consideradas inseguras.

A conexão do servidor é verificada, certificando-se de que o certificado do servidor contenha o nome correto e verifique com êxito usando o repositório de certificados.

Consulte este recurso on-line para obter mais detalhes: https://curl.haxx.se/docs/sslcerts.html

Veja também --proxy-insegure e --cacert.

A referência mencionada nessa entrada da página de manual descreve alguns dos comportamentos específicos de -k.

Esses comportamentos podem ser observados com curlsolicitações para testar páginas do BadSSL.com

curl -X GET https://wrong.host.badssl.com/
curl: (51) SSL: no alternative certificate subject name matches target host name 'wrong.host.badssl.com'

curl -k -X GET https://wrong.host.badssl.com/
..returns HTML content...
Freiheit
fonte
11
Adoramos o fato de que ele tem uma carta curta opção
kizzx2
Existe alguma maneira no curl config para tornar esta opção padrão?
Vence
4
@ Wins, isso seria uma ideia horrível. Corrija um alias se você precisar usá-lo repetidamente, para saber o que ele faz e não enviar acidentalmente suas senhas sem criptografia. alias insecure-curl="curl -k"
Alexander Huszagh
2
@AlexanderHuszagh No trabalho, só uso curl de um único servidor com um certificado autoassinado; nunca há um momento em que desejo fazer a verificação completa do certificado. Só porque algo parece uma idéia horrível na maioria dos casos, não significa que sempre seja.
Daniel H
4
@ DanielH Foi por isso que sugeri um pseudônimo: para que você obtenha a conveniência adicional com o conhecimento explícito de que é inseguro. Os fluxos de trabalho mudam: você ainda deve saber de alguma maneira limitada quando estiver trocando segurança por conveniência.
Alexander Huszagh 6/06/19
36

Você pode usar o seguinte comando para aplicar as alterações a todas as conexões:

$ echo insecure >> ~/.curlrc

No Windows apenas criar _curlrcarquivo de texto com o texto 'insegura' nele na sua %HOME%, %CURL_HOME%, %APPDATA%, %USERPROFILE%ou %USERPROFILE%\Application Datadiretório.

A vantagem de usar a solução acima é que ela funciona para todos os curlcomandos, mas não é recomendada, pois pode introduzir ataques MITM conectando-se a hosts não seguros e não confiáveis.

kenorb
fonte
72
Isso parece um conselho ruim: desabilitar essas verificações para todas as conexões não deve ser o padrão, mesmo se você fizer isso sozinho através da configuração por usuário. Se você precisar suprimir verificações de segurança, faça-o pelo menos aos poucos.
Christopher Schultz
4
Sempre que estou usando curvatura, controlo ou confio na máquina na outra extremidade.
Eric Hartford
11
@ EricHartford: Bem, bom para você, mas isso ainda não o torna um bom conselho geral. Pode-se usar curl, por exemplo, ao baixar homebrew no osx e acabar com uma versão modificada das ferramentas, porque ele habilitou isso como padrão às cegas.
19/10/2014
10
@EricHartford também tem certeza de que sempre faz coisas de cacho de confiança? Você já executou algum script de instalação do bash que saiu da internet? Concedido, você pode estar no preto de qualquer maneira, mas isso aumenta as chances.
Zlatko
esse é o verdadeiro @EricHartford. A mensagem anterior foi postada por alguém se passando por mim. Porque eu confiei em todas as máquinas ;-)
Anand Rockzz 18/07
5

Você está usando um certificado autoassinado. Por que você não anexou a CA ao seu pacote confiável de CA (Linux) ou o adicionou ao repositório de certificados confiável (windows)? Ou simplesmente use --cacert /Path/to/filecom o conteúdo do seu arquivo certificado autoassinado confiável.

As outras respostas estão respondendo à pergunta com base no wgetcomparável. No entanto, a verdadeira pergunta é como faço para manter uma conexão confiável com um certificado autoassinado usando curl. Com base em muitos comentários, a segurança é a principal preocupação em qualquer uma dessas respostas, e a melhor resposta seria confiar no certificado autoassinado e deixar curlas verificações de segurança intactas.

user3258557
fonte