Portanto, como a atualização do Mavericks tem mais problemas com os certificados.
Ao tentar enrolar um arquivo do meu servidor da web com seu certificado autoassinado, estava recebendo o erro "Certificado SSL: cadeia de certificados inválida".
Isso foi corrigido adicionando o certificado ao meu chaveiro do sistema e configurando-o para sempre permitir SSL, informações que encontrei aqui e aqui .
Isso funciona bem e quando enrolado um arquivo, ele é baixado corretamente.
No entanto, se eu rodar curl com sudo antes (por exemplo, eu tenho um script que precisa ser rodado com sudo e faz uma curvatura nele), volto à mesma mensagem de erro.
Eu estou supondo que a raiz não lê o chaveiro do sistema, talvez?
Alguém sabe uma maneira de consertar isso?
root
disponível em.curlrc
vez de--insecure
. O que é exatamente o que diz: para um invasor na posição de rede, seria trivial ao MITM e injetar código.A raiz não lê as configurações atuais de confiança do usuário, mas existem configurações de confiança de administrador e configurações de confiança específicas do usuário raiz. (Elas também são distintas das configurações de confiança do sistema .) Observe também que as configurações de confiança do certificado são um pouco diferentes da adição de um certificado a um chaveiro; você pode marcar um certificado como confiável sem adicioná-lo totalmente. (A situação exata aqui não está clara para mim e os documentos que vi são vagos.)
Você pode marcar um certificado como confiável para o usuário atual como
mas isso não ajuda na raiz. A solução, como você pode adivinhar agora, é
sudo
a anterior, que a marca como confiável para o usuário root:ou use o
-d
sinalizador para adicioná-lo às configurações de confiança do administrador:(O OS X abrirá uma caixa de diálogo de senha para confirmar esta.)
Qualquer um dos dois últimos parece ser suficiente
sudo curl
.Referência: https://developer.apple.com/library/mac/Documentation/Darwin/Reference/ManPages/man1/security.1.html
fonte
Isso está realmente na dica de saída:
A vantagem de usar a solução acima é que ela funciona para todos os
curl
comandos, mas não é recomendada, pois pode introduzir ataques MITM conectando-se a hosts não seguros e não confiáveis.fonte
Se você usa MacPorts (e o script de terceiros que você mencionou não o remove
$PATH
ou chama/usr/bin/curl
), você pode instalar as portascertsync
ecurl
nesta ordem.certsync
é uma ferramenta e uma lista de inicialização correspondente que exportará o chaveiro do sistema para$prefix/etc/openssl/cert.pem
e instalará um link simbólico$prefix/share/curl/curl-ca-bundle.crt -> $prefix/etc/openssl/cert.pem
para que o MacPorts curl retire automaticamente os certificados.certsync
também atualizará automaticamente os arquivos gerados quando você alterar o chaveiro do sistema.fonte
A documentação que você está procurando está aqui. Explica como usar o cURL no Mavericks e como fornecer seus certificados: http://curl.haxx.se/mail/archive-2013-10/0036.html
fonte
Para fazer o
sudo curl
trabalho (no OSX Sierra), tivemos que importar o certificadoSystem.keychain
e confiar nele. Isso pode ser feito manualmente no aplicativo Keychain ou usando este comando:Era importante especificar
-d
e definir manualmente o caminho para o chaveiro do sistema via-k
para garantir que o certificado realmente seja importado para lá, se ainda não o for.O comando funciona sem
sudo
, mas solicita a senha por meio de um diálogo da interface do usuário, o que pode ser um obstáculo para os scripts.fonte
SecCertificateCreateFromData: Unknown format in import.