Em que OS / distribuição você está? Você deve instalar o pacote ca-certificates (é assim que é chamado no debian / ubuntu).
Igorw 01/07/19
40
Para referência futura, eu já tinha ca-certificatesinstalado, mas o erro persistiu. O problema era que meus certificados estavam localizados em /etc/ssl/certs/ca-certificates.crtvez de /etc/pki/tls/certs/ca-bundle.crt, então eu apenas tive que definir a variável ambiental CURL_CA_BUNDLEpara o caminho correto.
Robert Smith
13
Legal! Funciona para mim quando eu configuro export CURL_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt.
arrumado
Respostas:
82
Este erro está relacionado a um pacote que faltava : ca-certificates. Instale-o.
ca-certificates já é a versão mais recente, mas eu ainda estou recebendo o erro
Pastor Bones
2
Obviamente, você receberá esse mesmo erro se tentar instalar o apt-cyg através do método recomendado usando curl e raw.github.com .
gistic
11
No Arch Linux, você também pode precisar pacman -S ca-certificates-utils. Eu fiz.
Mark Grimes
8
Este pacote já está instalado. Esta resposta não é útil.
precisa saber é o seguinte
8
@PastorBones Eu tive o mesmo problema que o pacote já foi mais recente, penso que no entanto tinha sido corrompido, para um sudo apt install --reinstall ca-certificatesreinstalado o pacote e resolveu os erros que eu estava vendo
Will
153
Eu também tinha a versão mais recente dos certificados CA instalada, mas ainda estava recebendo o erro:
O problema era que o curl esperava que o certificado estivesse no caminho, /etc/pki/tls/certs/ca-bundle.crtmas não conseguiu encontrá-lo porque estava no caminho /etc/ssl/certs/ca-certificates.crt.
Copiando meu certificado para o destino esperado executando
trabalhou para mim. Você precisará criar pastas para o destino de destino se elas não existirem executando
sudo mkdir -p /etc/pki/tls/certs
Se necessário, modifique o comando acima para fazer com que o nome do arquivo de destino corresponda ao caminho esperado por curl, ou seja, substitua /etc/pki/tls/certs/ca-bundle.crtpelo caminho a seguir "CAfile:" na sua mensagem de erro.
Você também pode criar um link simbólico ln -sse não quiser copiá-lo novamente toda vez que o atualizar.
starbeamrainbowlabs
4
Teve o mesmo problema para o rescuetimeaplicativo no Fedora 25. sudo ln -s /etc/pki/tls/certs/ca-bundle.crt /etc/pki/tls/certs/ca-certificates.crtresolveu o problema. ( CURL_CA_BUNDLEEnv var não funcionou)
GabLeRoux
No meu ubuntu esta corrigiu o problema: sudo ln -s /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.pem. Na verdade, eu estava recebendo o The repository ... does not have a Release fileque foi causado pela falta de certificado ( Could not load certificates from ...).
a melhor resposta, isso funcionou para mim no Linux Mint 17 #
Santiago
No Mac, trabalhou com o seguinte em~/.curlrccacert=/etc/openssl/cert.pem
amirathi
21
A maneira mais rápida de contornar o erro é adicionar a opção -k em algum lugar da sua solicitação de ondulação. Essa opção "permite conexões com SSL cita sem certs". (de curl --help)
Esteja ciente de que isso pode significar que você não está falando com o terminal que pensa que é, pois eles apresentam um certificado não assinado por uma CA em que você confia.
Isso pode contornar o erro, mas também torna a conexão "segura" insegura.
Tim
1
Na verdade não. Até onde eu sei, você não pode simplesmente ignorar a criptografia de uma conexão segura, portanto ela ainda é criptografada e vai para apenas um ponto de extremidade. Alguém me corrija se eu estiver errado, mas o único risco que você corre é que pode ser vítima de um ataque do tipo homem do meio. Ainda não é um risco provável se você estiver usando curl.
10gistic
18
Sim, realmente. A opção "-k" é uma abreviação de "--insecure". Se você é homem do meio, o que você acha que ele está fazendo com seus dados? Alerta de spoiler: ele está descriptografando, roubando e possivelmente modificando e injetando de volta no fluxo inseguro. Diretamente da página do manual: "-k, --insecure (SSL) Esta opção permite explicitamente que o curl execute conexões e transferências SSL" inseguras ". Todas as conexões SSL tentam se tornar seguras usando o pacote de certificados da CA instalado por padrão. Isso faz com que todas as conexões consideradas "inseguras" falhem, a menos que -k, --inseguro seja usado. "
Tim
2
Se você precisar de SSL, precisará de privacidade e verificação - a -ksinalização significa que você está perdendo a verificação. Dependendo das suas necessidades, isso pode ser aceitável. O MITM é um ataque não trivial se você assumir que sua rede e o servidor com o qual está se comunicando estão protegidos contra intrusos (você pode fazer isso?). O risco aumenta dependendo do tipo de dados (código fonte e certificados são mais arriscados que as imagens). Você pode verificar a integridade dos dados após a transferência (somas de verificação etc.), mas agora está transferindo sua confiança para esse canal de soma de verificação. No final, -kdá-lhe um pouco mais de trabalho.
Mark Fox
Então, isso significa que se eu estiver usando um certificado autoassinado. Eu deveria estar usando a opção -k. Como talvez não seja possível verificar o certificado autoassinado?
25414 Linus
15
@roens está correto. Isso afeta todos os usuários do Anaconda , com erro abaixo curl: (77) error setting certificate verify locations:
CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
A solução alternativa é usar a curvatura padrão do sistema e evitar mexer com a PATHvariável Anaconda anexada . Você também pode
Renomeie o binário de ondulação Anaconda :) mv /path/to/anaconda/bin/curl /path/to/anaconda/bin/curl_anaconda
Boa descoberta, eu não sabia que o Anaconda estava roubando a precedência do meu caminho. Funcionou uma vez que eu substituído curlcom o caminho completo/usr/bin/curl
jxramos
Isso ajudou muito! Obrigado.
Shababb Karim
12
De $ man curl:
--cert-type <type>
(SSL) Tells curl what certificate type the provided certificate
is in. PEM, DER and ENG are recognized types. If not specified,
PEM is assumed.
If this option is used several times, the last one will be used.
--cacert <CA certificate>
(SSL) Tells curl to use the specified certificate file to verify
the peer. The file may contain multiple CA certificates. The
certificate(s) must be in PEM format. Normally curl is built to
use a default file for this, so this option is typically used to
alter that default file.
Para o código PHP em execução no XAMPP no Windows, achei que precisava editar o php.ini para incluir o abaixo
[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo = curl-ca-bundle.crt
copie para um arquivo https://curl.haxx.se/ca/cacert.pem e renomeie para curl-ca-bundle.crt e coloque-o no caminho \ xampp (não consegui fazer o curl.capath funcionar) . Também achei que o CAbundle no site cURL não era suficiente para o site remoto ao qual estava me conectando, então usei um listado com uma versão pré-compilada do Windows do curl 7.47.1 em http://winampplugins.co.uk /ondulação/
Solução alternativa, mas isso me ajuda depois de muito tempo com certificados de ondulação. Obrigado.
K. Gol
4
o curl executa a SSLverificação de certificado por padrão, usando um "pacote" de Certificate Authority (CA)chaves públicas (certificados da CA). O pacote padrão é chamado curl-ca-bundle.crt; você pode especificar um arquivo alternativo usando a opção --cacert.
Se este HTTPSservidor usar um certificado assinado por uma CA representada no pacote, a verificação do certificado provavelmente falhou devido a um problema com o certificado (pode estar expirado ou o nome pode não corresponder ao nome de domínio na URL).
Se você deseja desativar a verificação do certificado por curl, use a opção -k (ou --insecure).
Apenas um aparte de que "confiar na fonte" é bastante irrelevante aqui, já que sem validar adequadamente o certificado em uma CA, você não tem idéia de quem é "a fonte".
Jeff Allen
4
Parece que sua curvatura aponta para um arquivo inexistente com certificados da CA ou similares.
Basta criar as pastas que estão faltando no seu sistema.
/ etc / pki / tls / certs /
e crie o arquivo usando o seguinte comando,
sudo apt-get install ca-certificados
e copie e cole o certificado na pasta de destino, que está aparecendo no seu erro. O meu foi " with message 'error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none' in" certifique-se de colar o arquivo no local exato mencionado no erro. Use o seguinte comando para copiar e colar.
Nenhuma das principais respostas funcionou para mim, mas isso funcionou!
Prachiti Prakash Prabhu
2
Pelo que vale a pena, a verificação which curlestá sendo executada também é significativa.
Um usuário em uma máquina compartilhada que eu mantenho estava recebendo esse erro. Mas a causa acabou sendo porque eles instalaram o Anaconda ( http://continuum.io ). Isso colocou o caminho binário do Anaconda antes do padrão $PATH, e ele vem com seu próprio curlbinário, que teve problemas para encontrar os certificados padrão que foram instalados nesta máquina Ubuntu.
Eu recomendo verificar which -a curlpara ver tudo disponível e, claro, anotando qual deles vem por cima.
jxramos
1
Se você estiver usando homebrew no macOS ou linuxbrew no linux, tente reinstalar o openssle curlcom as etapas a seguir nesta página .
Esta mensagem de erro indica que a ondulação não pode estabelecer uma conexão segura usando o openssl. Uma reinstalação do openssl deve corrigir o problema. Para usar temporariamente uma conexão não segura para o curl e o git para baixar os arquivos necessários, execute:
Depois de horas tentando. Isso me salvou. A solução certa para os macos finalmente. Muito obrigado! :)
mrateb 22/01/19
1
Estou com o mesmo problema: estou criando uma imagem de janela de encaixe baseada em alpinos e, quando quero acessar um site da minha organização, esse erro aparece. Para resolvê-lo, tenho que obter o certificado de CA da minha empresa e, em seguida, preciso adicioná-lo aos certificados de CA da minha imagem.
Obter o certificado da CA
Use o OpenSSL para obter os certificados relacionados ao site:
Obter o último certificado (o conteúdo entre as -----BEGIN CERTIFICATE-----e as -----END CERTIFICATE-----marcações incluído) e salve-o em um arquivo (mycompanyRootCA.crt por exemplo)
Crie sua imagem
Então, quando você criar sua imagem do Docker a partir do alpine, faça o seguinte:
FROM alpine
RUN apk add ca-certificates curl
COPY mycompanyRootCA.crt /usr/local/share/ca-certificates/mycompanyRootCA.crt
RUN update-ca-certificates
Se alguém ainda estiver com problemas, tente isso, funcionou para mim. Exclua os arquivos em seu /etc/ssl/certs/diretório e reinstale os certificados ca:
O erro ocorre devido a arquivos de certificado de cadeia SSL corrompidos ou ausentes no diretório PKI. Você precisará verificar se os arquivos estão agrupados, seguindo as etapas: No seu console / terminal:
mkdir /usr/src/ca-certificates && cd /usr/src/ca-certificates
Abaixo, descreva as etapas para corrigir os problemas.
1. Descubra que o arquivo existe no URL de definição.
2. Caso contrário, baixe o arquivo a partir do URL. https://curl.haxx.se/ca/cacert.pem
3. Copie e envie o arquivo para o caminho definido no arquivo php.ini.
4. Reinicie o serviço apache.
Eu tive esse problema e minha versão do CURL não pôde analisar certificados codificados em DER (e também não estava prestando atenção à opção --cert-type). Quando converti o certificado para o formato PEM, ele funcionou.
No meu caso, o /etc/ssl/certs/ca-certificates.crtarquivo estava ausente. Como se viu, excluí o conteúdo do /etc/ssl/certsDockerfile ao criar a imagem do Docker. Após ajustar meus scripts de shell / comandos bash, executados no Dockerfile - o curl agora funciona perfeitamente dentro do novo contêiner.
ca-certificates
instalado, mas o erro persistiu. O problema era que meus certificados estavam localizados em/etc/ssl/certs/ca-certificates.crt
vez de/etc/pki/tls/certs/ca-bundle.crt
, então eu apenas tive que definir a variável ambientalCURL_CA_BUNDLE
para o caminho correto.export CURL_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
.Respostas:
Este erro está relacionado a um pacote que faltava :
ca-certificates
. Instale-o.No Ubuntu Linux (e distribuição semelhante):
No CygWin via Apt-Cyg
No Arch Linux (Raspberry Pi)
A documentação diz:
Como visto em: Debian - Detalhes dos certificados ca do pacote no squeeze
fonte
pacman -S ca-certificates-utils
. Eu fiz.sudo apt install --reinstall ca-certificates
reinstalado o pacote e resolveu os erros que eu estava vendoEu também tinha a versão mais recente dos certificados CA instalada, mas ainda estava recebendo o erro:
O problema era que o curl esperava que o certificado estivesse no caminho,
/etc/pki/tls/certs/ca-bundle.crt
mas não conseguiu encontrá-lo porque estava no caminho/etc/ssl/certs/ca-certificates.crt
.Copiando meu certificado para o destino esperado executando
trabalhou para mim. Você precisará criar pastas para o destino de destino se elas não existirem executando
Se necessário, modifique o comando acima para fazer com que o nome do arquivo de destino corresponda ao caminho esperado por curl, ou seja, substitua
/etc/pki/tls/certs/ca-bundle.crt
pelo caminho a seguir "CAfile:" na sua mensagem de erro.fonte
ln -s
se não quiser copiá-lo novamente toda vez que o atualizar.rescuetime
aplicativo no Fedora 25.sudo ln -s /etc/pki/tls/certs/ca-bundle.crt /etc/pki/tls/certs/ca-certificates.crt
resolveu o problema. (CURL_CA_BUNDLE
Env var não funcionou)sudo ln -s /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.pem
. Na verdade, eu estava recebendo oThe repository ... does not have a Release file
que foi causado pela falta de certificado (Could not load certificates from ...
).Coloque isso no seu
.bashrc
(ver comentário de Robert)
fonte
$CURL_CA_BUNDLE = "/etc/ssl/certs/ca-certificates.crt"
ao.xonshrc
).CURL_CA_BUNDLE=/path/to/bundle.crt curl http://example.com
Crie um arquivo
~/.curlrc
com o seguinte conteúdofonte
~/.curlrc
cacert=/etc/openssl/cert.pem
A maneira mais rápida de contornar o erro é adicionar a opção -k em algum lugar da sua solicitação de ondulação. Essa opção "permite conexões com SSL cita sem certs". (de curl --help)
Esteja ciente de que isso pode significar que você não está falando com o terminal que pensa que é, pois eles apresentam um certificado não assinado por uma CA em que você confia.
Por exemplo:
me deu a seguinte resposta de erro:
Eu adicionei no -k:
e nenhuma mensagem de erro. Como um bônus, agora eu tenho o apt-cyg instalado. E certificados CA.
fonte
-k
sinalização significa que você está perdendo a verificação. Dependendo das suas necessidades, isso pode ser aceitável. O MITM é um ataque não trivial se você assumir que sua rede e o servidor com o qual está se comunicando estão protegidos contra intrusos (você pode fazer isso?). O risco aumenta dependendo do tipo de dados (código fonte e certificados são mais arriscados que as imagens). Você pode verificar a integridade dos dados após a transferência (somas de verificação etc.), mas agora está transferindo sua confiança para esse canal de soma de verificação. No final,-k
dá-lhe um pouco mais de trabalho.@roens está correto. Isso afeta todos os usuários do Anaconda , com erro abaixo
curl: (77) error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none
A solução alternativa é usar a curvatura padrão do sistema e evitar mexer com a
PATH
variável Anaconda anexada . Você também podeRenomeie o binário de ondulação Anaconda :)
mv /path/to/anaconda/bin/curl /path/to/anaconda/bin/curl_anaconda
OU remover o Anaconda curl
conda remove curl
$ which curl /usr/bin/curl
[0] Anaconda Ubuntu curl Github issue https://github.com/conda/conda-recipes/issues/352
fonte
curl
com o caminho completo/usr/bin/curl
De
$ man curl
:fonte
Para o código PHP em execução no XAMPP no Windows, achei que precisava editar o php.ini para incluir o abaixo
copie para um arquivo https://curl.haxx.se/ca/cacert.pem e renomeie para curl-ca-bundle.crt e coloque-o no caminho \ xampp (não consegui fazer o curl.capath funcionar) . Também achei que o CAbundle no site cURL não era suficiente para o site remoto ao qual estava me conectando, então usei um listado com uma versão pré-compilada do Windows do curl 7.47.1 em http://winampplugins.co.uk /ondulação/
fonte
Eu tive o mesmo problema. Acontece que meu
/etc/ssl/certs/ca-certificates.crt
arquivo estava malformado. A última entrada mostrou algo como isto:Depois de adicionar uma nova linha antes
-----END CERTIFICATE-----
, o curl conseguiu lidar com o arquivo de certificados.Foi muito chato descobrir isso, pois meu
update-ca-certificates
comando não me deu nenhum aviso.Isso pode ou não ser um problema de curvatura específico da versão, então aqui está a minha versão, apenas para ser completo:
fonte
Isso funcionou para mim
depois vá para a pasta de certificados em
copie o arquivo ca-certificates.crt no diretório
/etc/pki/tls/certs
se não houver pasta tls / certs: crie uma e altere as permissões usando chmod 777 -R folderNAME
fonte
Outra alternativa para corrigir esse problema é desativar a validação do certificado:
fonte
o curl executa a
SSL
verificação de certificado por padrão, usando um "pacote" deCertificate Authority (CA)
chaves públicas (certificados da CA). O pacote padrão é chamado curl-ca-bundle.crt; você pode especificar um arquivo alternativo usando a opção --cacert.Se este
HTTPS
servidor usar um certificado assinado por uma CA representada no pacote, a verificação do certificado provavelmente falhou devido a um problema com o certificado (pode estar expirado ou o nome pode não corresponder ao nome de domínio na URL).Se você deseja desativar a verificação do certificado por curl, use a opção -k (ou
--insecure
).por exemplo
fonte
Parece que sua curvatura aponta para um arquivo inexistente com certificados da CA ou similares.
Para a referência principal em certificados de autoridade de certificação com ondulação, consulte: https://curl.haxx.se/docs/sslcerts.html
fonte
Basta criar as pastas que estão faltando no seu sistema.
e crie o arquivo usando o seguinte comando,
e copie e cole o certificado na pasta de destino, que está aparecendo no seu erro. O meu foi "
with message 'error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none' in
" certifique-se de colar o arquivo no local exato mencionado no erro. Use o seguinte comando para copiar e colar.Fixo.
fonte
Pelo que vale a pena, a verificação
which curl
está sendo executada também é significativa.Um usuário em uma máquina compartilhada que eu mantenho estava recebendo esse erro. Mas a causa acabou sendo porque eles instalaram o Anaconda ( http://continuum.io ). Isso colocou o caminho binário do Anaconda antes do padrão
$PATH
, e ele vem com seu própriocurl
binário, que teve problemas para encontrar os certificados padrão que foram instalados nesta máquina Ubuntu.fonte
which -a curl
para ver tudo disponível e, claro, anotando qual deles vem por cima.Se você estiver usando homebrew no macOS ou linuxbrew no linux, tente reinstalar o
openssl
ecurl
com as etapas a seguir nesta página .Pode ser necessário iniciar uma nova sessão do shell para verificar o resultado com
Se mostrar a seguinte saída na saída, o problema deve ser resolvido!
Referências:
fonte
Estou com o mesmo problema: estou criando uma imagem de janela de encaixe baseada em alpinos e, quando quero acessar um site da minha organização, esse erro aparece. Para resolvê-lo, tenho que obter o certificado de CA da minha empresa e, em seguida, preciso adicioná-lo aos certificados de CA da minha imagem.
Obter o certificado da CA
Use o OpenSSL para obter os certificados relacionados ao site:
Isso produzirá algo como:
Obter o último certificado (o conteúdo entre as
-----BEGIN CERTIFICATE-----
e as-----END CERTIFICATE-----
marcações incluído) e salve-o em um arquivo (mycompanyRootCA.crt por exemplo)Crie sua imagem
Então, quando você criar sua imagem do Docker a partir do alpine, faça o seguinte:
Sua imagem agora funcionará corretamente! \ o /
fonte
Se alguém ainda estiver com problemas, tente isso, funcionou para mim. Exclua os arquivos em seu
/etc/ssl/certs/
diretório e reinstale os certificados ca:Fiz isso quando tentei instalar o Linuxbrew.
fonte
Basta encontrar esta solução que funciona perfeitamente para mim.
Encontrei esta solução a partir daqui
fonte
O erro ocorre devido a arquivos de certificado de cadeia SSL corrompidos ou ausentes no diretório PKI. Você precisará verificar se os arquivos estão agrupados, seguindo as etapas: No seu console / terminal:
Entre neste site: https://rpmfind.net/linux/rpm2html/search.php?query=ca-certificates , obtenha seu certificado CA para SO. Copie o URL do download e cole no URL: wget your_url_donwload_ca-ceritificated.rpm agora, instale o yout rpm:
agora reinicie o seu serviço: meu exemplo este comando:
fonte
Execute o seguinte comando no git bash que funciona bem para mim
fonte
Isso corrigiu para mim:
fonte
Achei essa correção fácil e segura. Apenas envolve alterar o caminho de dois valores no
php.ini
arquivo. Siga as instruções aqui: https://ourcodeworld.com/articles/read/196/xampp-wampp-php-ssl-certificate-error-unable-to-get-local-issuer-certificatefonte
Abaixo, descreva as etapas para corrigir os problemas.
1. Descubra que o arquivo existe no URL de definição.
2. Caso contrário, baixe o arquivo a partir do URL. https://curl.haxx.se/ca/cacert.pem
3. Copie e envie o arquivo para o caminho definido no arquivo php.ini.
4. Reinicie o serviço apache.
fonte
Eu tive esse problema e minha versão do CURL não pôde analisar certificados codificados em DER (e também não estava prestando atenção à opção --cert-type). Quando converti o certificado para o formato PEM, ele funcionou.
fonte
No meu caso, o
/etc/ssl/certs/ca-certificates.crt
arquivo estava ausente. Como se viu, excluí o conteúdo do/etc/ssl/certs
Dockerfile ao criar a imagem do Docker. Após ajustar meus scripts de shell / comandos bash, executados no Dockerfile - o curl agora funciona perfeitamente dentro do novo contêiner.fonte