root@sclrdev:/home/sclr/certs/FreshCerts# curl --ftp-ssl --verbose ftp://{abc}/ -u trup:trup --cacert /etc/ssl/certs/ca-certificates.crt
* About to connect() to {abc} port 21 (#0)
* Trying {abc}...
* Connected to {abc} ({abc}) port 21 (#0)
< 220-Cerberus FTP Server - Home Edition
< 220-This is the UNLICENSED Home Edition and may be used for home, personal use only
< 220-Welcome to Cerberus FTP Server
< 220 Created by Cerberus, LLC
> AUTH SSL
< 234 Authentication method accepted
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS alert, Server hello (2):
* SSL certificate problem: unable to get local issuer certificate
* Closing connection 0
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: http://curl.haxx.se/docs/sslcerts.html
curl performs SSL certificate verification by default, using a "bundle"
of Certificate Authority (CA) public keys (CA certs). If the default
bundle file isn't adequate, you can specify an alternate file
using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
the bundle, the certificate verification probably failed due to a
problem with the certificate (it might be expired, or the name might
not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
the -k (or --insecure) option.
curl
ssl
openssl
ssl-certificate
x509certificate
user3812540
fonte
fonte
Respostas:
Relacionado ao erro 'Problema com o certificado SSL: impossível obter o certificado do emissor local' É importante observar que isso se aplica ao sistema que envia a solicitação de CURL e NÃO ao servidor que está recebendo a solicitação.
Faça o download do último cacert.pem em https://curl.haxx.se/ca/cacert.pem
Adicione a seguinte linha ao php.ini: (se isso for hospedagem compartilhada e você não tiver acesso ao php.ini, poderá adicioná-lo ao .user.ini em public_html).
curl.cainfo="/path/to/downloaded/cacert.pem"
Coloque o caminho entre aspas duplas !!!
Por padrão, o processo FastCGI analisa novos arquivos a cada 300 segundos (se necessário, você pode alterar a frequência adicionando alguns arquivos, conforme sugerido aqui https://ss88.uk/blog/fast-cgi-and-user-ini- arquivos-o-novo-htaccess / ).
fonte
curl.cainfo="/path/to/downloaded/cacert.pem" // Do not forget to write between quotes
Está falhando, pois o cURL não consegue verificar o certificado fornecido pelo servidor.
Existem duas opções para fazer isso funcionar:
Use cURL com a
-k
opção que permite que o curl faça conexões inseguras, ou seja, o cURL não verifica o certificado.Adicione a CA raiz (a CA que assina o certificado do servidor) ao
/etc/ssl/certs/ca-certificates.crt
Você deve usar a opção 2, pois é a opção que garante a conexão com o servidor FTP seguro.
fonte
Resolvi esse problema adicionando um código de linha no script cURL:
Aviso : Isso torna a solicitação totalmente insegura (veja a resposta em @YSU)!
fonte
if( stristr("127.0.0.1",$_SERVER["SERVER_NAME"] ) || stristr("localhost",$_SERVER["SERVER_NAME"] )) curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
No meu caso, acabou sendo um problema com a instalação do meu certificado no serviço que eu estava tentando consumir com o cURL. Falha ao agrupar / concatenar os certificados intermediário e raiz no meu certificado de domínio . A princípio, não era óbvio que esse era o problema, porque o Chrome resolveu e aceitou o certificado, apesar de deixar de fora os certificados intermediário e raiz.
Após empacotar o certificado, tudo funcionou conforme o esperado. Eu empacotei assim
E repetido para todos os intermediários e o certificado raiz.
fonte
-----END CERTIFICATE----------BEGIN CERTIFICATE-----
em seu pacote, e você vai obter o erro obscuro:curl: (77) error setting certificate verify locations
Para mim, a instalação simples de certificados ajudou:
fonte
Teve este problema após instalar o Git Extensions v3.48. Tentei instalar o mysysgit novamente, mas o mesmo problema. No final, teve que desativar (considere as implicações de segurança!) A verificação Git SSL com:
mas se você tiver um certificado de domínio, adicione-o melhor (Win7)
fonte
--global
ficar sem ter o SSL desativado apenas para o repositório em que há problemas. Consulte groups.google.com/forum/#!topic/git-for-windows/mlqn5J4OLlw para uma discussão sobre os arquivos crt atuais necessários.Corremos esse erro recentemente. Acontece que estava relacionado ao certificado raiz que não está sendo instalado no diretório de armazenamento da CA corretamente. Eu estava usando um comando curl no qual estava especificando o diretório CA diretamente.
curl --cacert /etc/test/server.pem --capath /etc/test ...
Este comando falhou sempre com curl: (60) problema com o certificado SSL: não é possível obter o certificado do emissor local.Após o uso
strace curl ...
, foi determinado que o curl procurava o arquivo raiz cert com o nome 60ff2731.0, que se baseia em uma convenção de nomenclatura de hash openssl. Então, eu encontrei este comando para importar efetivamente o certificado raiz corretamente:que cria um softlink
curl, sob as capas, lia o server.pem cert, determinava o nome do arquivo raiz cert (rootcert.pem), convertia-o em seu nome de hash e, em seguida, fazia uma pesquisa no arquivo do sistema operacional, mas não conseguia encontrá-lo.
Portanto, a dica é usar strace ao executar curl quando o erro de curl é obscuro (foi uma tremenda ajuda) e, em seguida, certifique-se de instalar corretamente o certificado raiz usando a convenção de nomenclatura openssl.
fonte
Provavelmente é um certificado ausente do servidor.
Raiz-> Intermediário-> Servidor
Um servidor deve enviar o Servidor e o Intermediário, no mínimo.
Use
openssl s_client -showcerts -starttls ftp -crlf -connect abc:21
para depurar o problema.Se apenas um certificado for retornado (autoassinado ou emitido), você deverá optar por:
curl -k
(péssima idéia)Se o servidor retornou, mais de um, mas não incluindo um certificado auto-assinado (raiz):
Se o servidor retornou um certificado de CA raiz, ele não está no seu armazenamento de CA, suas opções são:
Eu ignorei certs expirados / revogados porque não havia mensagens indicando isso. Mas você pode examinar os fatos com
openssl x509 -text
Como você está se conectando a um servidor ftp de edição inicial ( https://www.cerberusftp.com/support/help/installing-a-certificate/ ), vou dizer que é autoassinado.
Por favor, poste mais detalhes, como a saída do openssl.
fonte
De acordo com os documentos do cURL, você também pode passar o certificado para o
curl
comando:Por exemplo:
fonte
Pode ser suficiente apenas atualizar a lista de certificados
fonte
Tente reinstalar o curl no Ubuntu e atualize meus certificados de autoridade de certificação com os
sudo update-ca-certificates --fresh
quais os certificados foram atualizadosfonte
No windows eu estava tendo esse problema. O Curl foi instalado pelo mysysgit; portanto, o download e a instalação da versão mais recente corrigiram meu problema.
Caso contrário, estas são instruções decentes sobre como atualizar seu certificado de CA que você pode tentar.
fonte
Sim, você precisa adicionar um certificado CA também. Adicionando um trecho de código no Node.js para uma visão clara.
fonte
Eu também encontrei esse problema. Eu li este tópico e a maioria das respostas é informativa, mas excessivamente complexa para mim. Como não tenho experiência em tópicos de rede, esta resposta é para pessoas como eu.
No meu caso, esse erro estava ocorrendo porque não incluí os certificados intermediário e raiz ao lado do certificado que estava usando no meu aplicativo.
Aqui está o que eu recebi do fornecedor de certificado SSL:
No
abc.crt
arquivo, havia apenas um certificado:Se eu o fornecesse neste formato, o navegador não mostraria nenhum erro (Firefox), mas eu receberia um
curl: (60) SSL certificate : unable to get local issuer certificate
erro ao fazer a solicitação de ondulação.Para corrigir esse erro, verifique seu
abc-bunde.crt
arquivo. Você provavelmente verá algo assim:Estes são seus certificados intermediários e raiz. Ocorreu um erro porque eles estão ausentes no certificado SSL que você está fornecendo ao seu aplicativo.
Para corrigir o erro, combine o conteúdo de ambos os arquivos neste formato:
Observe que não há espaços entre os certificados, no final ou no início do arquivo. Depois de fornecer esse certificado combinado ao seu aplicativo, seu problema deve ser corrigido.
fonte
No Windows - se você executar a partir do cmd
Faça o download do cacert.pem em https://curl.haxx.se/docs/caextract.html
Defina a variável de ambiente:
e recarregar o ambiente
Agora tente novamente
Razão do problema: https://laracasts.com/discuss/channels/general-discussion/curl-error-60-ssl-certificate-problem-unable-to-get-local-issuer-certificate/replies/95548
fonte
Meu caso foi diferente. Estou hospedando um site atrás de um firewall. O erro foi causado pelo pfSense.
Achei a causa acidentalmente, graças a esta resposta .
Tudo está bem quando eu acessei meu site pela WAN.
No entanto, quando o site era acessado a partir da LAN (por exemplo, quando o Wordpress fazia uma
curl
solicitação para seu próprio servidor, apesar de usar o IP da WAN49.x.x.x
), era exibida a página de login do pfSense.Eu identifiquei o certificado como
pfSense webConfigurator Self-Signed Certificate
. Não é de admirar que tenhacurl
ocorrido um erro.Causa: O que aconteceu foi o
curl
uso do endereço IP da WAN do site49.x.x.x
. Mas, no contexto do servidor web, o IP da WAN era o firewall.Depuração: descobri que estava recebendo o certificado pfSense.
Solução: no servidor que hospeda o site, aponte seu próprio nome de domínio para 127.0.0.1
Ao aplicar a solução,
curl
a solicitação foi tratada adequadamente pelo servidor da web e não encaminhada ao firewall que respondeu enviando a página de login.fonte
Este é um problema de armazenamento de certificado ssh. Você precisa fazer o download do arquivo pem de certificado válido no site da CA de destino e criar o arquivo de link flexível para instruir o certificado confiável SSL.
openssl x509 -hash -noout -in DigiCert_Global_Root_G3.pem
você vai ter
dd8e9d41
construa o link solf com número de hash e coloque o sufixo no arquivo com .0 (ponto zero)
dd8e9d41.0
Então tente novamente.
fonte
Faça o download https://curl.haxx.se/ca/cacert.pem
Após o download, mova esse arquivo para o seu servidor wamp.
Para exp: D: \ wamp \ bin \ php \
Em seguida, adicione a seguinte linha ao arquivo php.ini na parte inferior.
curl.cainfo = "D: \ wamp \ bin \ php \ cacert.pem"
fonte
Você deve alterar o certificado do servidor de
cert.pem
parafullchain.pem
Eu tive o mesmo problema com o Perl HTTPS Daemon: Alterei
:
SSL_cert_file => '/etc/letsencrypt/live/mydomain/cert.pem'
para:
SSL_cert_file => '/etc/letsencrypt/live/mydomain/fullchain.pem'
fonte
Até agora, vi esse problema acontecer nas redes corporativas por dois motivos, um ou os dois podem estar acontecendo no seu caso:
Como observação lateral, o número 2 acima pode fazer com que você se sinta desconfortável com a verificação do tráfego TLS supostamente seguro. Esse é o mundo corporativo para você.
fonte
Teve esse problema e não foi resolvido com a versão mais recente. / etc / certs tinha o certificado raiz, o navegador disse que está tudo bem. Após alguns testes, recebi do ssllabs.com o aviso de que minha cadeia não estava completa (na verdade, era a cadeia do certificado antigo e não o novo). Depois de corrigir a cadeia de certificação, tudo correu bem, mesmo com ondulações.
fonte
Eu tive esse problema com o Digicert de todas as autoridades de certificação. Criei um arquivo digicertca.pem que era apenas intermediário e raiz colados em um arquivo.
Eorekan teve a resposta, mas apenas eu e um outro votamos sua resposta.
fonte
Especificamente para
Windows
usuários, usandocurl-7.57.0-win64-mingw
ou versão similar.Isso é um pouco tarde, e as respostas existentes estão corretas. Mas eu ainda tinha que me esforçar um pouco para fazê-lo funcionar na minha máquina Windows, embora o processo seja realmente bastante direto. Então, compartilhando o processo passo a passo.
Esse erro basicamente significa que a curvatura está falhando ao verificar o certificado do URI de destino. Se você confiar no emissor do certificado (CA), poderá adicioná-lo à lista de certificados confiáveis.
Para isso, navegue no URI (por exemplo, no Chrome) e siga as etapas
.cer
arquivo e copie o conteúdo (incluindo ----- BEGIN CERTIFICATE ----- e ----- END CERTIFICATE -----)curl.exe
está salvo, por exemploC:\SomeFolder\curl-7.57.0-win64-mingw\bin
curl-ca-bundle.crt
arquivo com um editor de textoAgora, seu comando deve executar bem em curl.
fonte
isso pode ajudá-lo a entender:
testado no guzzle / guzzle 3. *
fonte
Solução simples: IN
~/.sdkman/etc/config
, alterarsdkman_insecure_ssl=true
Etapas:
nano
~/.sdkman/etc/config
alteração
sdkman_insecure_ssl=false
parasdkman_insecure_ssl=true
salvar e sair
fonte