curl: (60) Problema no certificado SSL: não é possível obter o certificado do emissor local


258
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.


Eu tive um problema semelhante. Isso funcionou para mim stackoverflow.com/a/29649024
Sagruob 7/15

No meu caso, superuser.com/a/719047/137881 ajudou.
Abdull

//, no meu caso, recebi esse erro ao fazer solicitações de curl ao servidor HashiCorp Vault até instalar um certificado X509 com a entidade final / Intermediários / raiz apenas na ordem inversa, cada qual codificada em Base64.
Nathan Basanese 11/11

//, Que pesquisa você fez sobre isso antes de copiar o erro aqui?
Nathan Basanese 11/11

Respostas:


231

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.

  1. Faça o download do último cacert.pem em https://curl.haxx.se/ca/cacert.pem

  2. 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 !!!

  3. 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 / ).


1
O primeiro diz respeito à certificação de operações executadas usando a biblioteca OpenSSL; a segunda às solicitações feitas usando cURL
Mike

4
Na verdade, lutei por uma hora, pois não escrevi o caminho entre aspas. Então, tome nota aquicurl.cainfo="/path/to/downloaded/cacert.pem" // Do not forget to write between quotes
Himanshu Upadhyay

12
Não vejo nenhuma referência na pergunta ao PHP. Por que as referências na resposta? Se a pergunta foi editada, a resposta pode ser editada para refletir a linha de comando que está sendo usada agora?
Adam

5
@ Adam Embora a pergunta não mencione o PHP, isso aparece como o resultado de pesquisa # 1 no Google para a mensagem de erro específica gerada pelo PHP. Portanto, talvez não responda especificamente à pergunta do OP, mas parece que ainda é útil para a comunidade.
Rinogo 02/04/19

1
Esta resposta foi enganosa para mim, pois é uma solução relacionada ao PHP
Wasif Khan

141

Está falhando, pois o cURL não consegue verificar o certificado fornecido pelo servidor.

Existem duas opções para fazer isso funcionar:

  1. Use cURL com a -kopção que permite que o curl faça conexões inseguras, ou seja, o cURL não verifica o certificado.

  2. 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.


1
Adicionei meu arquivo rootCA.pem dentro: - root @ sclrdev: / home / certs / FreshCerts # ll /etc/ssl/certs/rootCA.pem -rwxrwxrwx 1 raiz raiz 1302 8 de julho de 00:09 / etc / ssl / certs / rootCA.pem * Mesmo eu verifiquei o arquivo ServerCertificate.pem com meu rootCA.pem: - root @ sclrdev: / home / certs / FreshCerts # openssl verifique o arquivo -CA rootCA.pem ../ServerCertificate.pem ServerCertificate.pem: OK E também o conteúdo do rootCA.pem dentro de ca-certificates.crt. root @ sclrdev: / home / sclr / subhendu / certs / FreshCerts # ll /etc/ssl/certs/ca-certificates.crt -rw-r - r-- 1 raiz root 247945 jul 8 00:10 / etc / ssl /certs/ca-certificates.crt
user3812540

Não sou capaz de descobrir onde estou errado. Nos rastreamentos do WireShark, recebo o seguinte erro: - Cliente Olá Servidor Olá, Certificado, Servidor Olá Alerta Concluído (nível: Fatal, Descrição: CA desconhecido (48)) Você pode me orientar e me ajudar nisso?
user3812540

A maneira como o openssl funciona é que ele tenta concluir a cadeia de certificados durante a verificação. O seu certificado de servidor é assinado por uma CA intermediária e não por uma CA raiz. por exemplo
Yuvika

Meu certificado é assinado apenas pela CA raiz.
user3812540

1
Eu recebi algum erro: - root @ sclrdev: ~ # openssl s_client -connect <server_ip>: 21 -showcerts CONNECTED (00000003) 3074050248: erro: 140770FC: rotinas SSL: SSL23_GET_SERVER_HELLO: protocolo desconhecido: s23_clnt.c: 766: --- nenhum certificado de ponto disponível --- Nenhum nome de CA de certificado de cliente enviado --- O handshake SSL leu 7 bytes e gravou 225 bytes --- Novo, (NENHUM), a cifra é (NENHUM) Renegociação segura NÃO é suportada Compactação: NENHUM Expansão: NENHUM --- Não tenho certeza do que isso significa exatamente?
precisa saber é o seguinte

69

Resolvi esse problema adicionando um código de linha no script cURL:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

Aviso : Isso torna a solicitação totalmente insegura (veja a resposta em @YSU)!


42
Isso pode ajudar a contornar o problema. Mas perde totalmente a idéia de https e o sistema de certificação.
Stephan Richter

1
Trabalho! Agradável rápida n sujo de bypass se você não se preocupam com o certificado
Gilly

2
Isso o torna completamente inseguro.
Moox

1
Eu estava enfrentando esse problema no meu servidor local, embora o mesmo código funcionasse bem no servidor de teste. Tudo bem para mim, como foi no local. Obrigado
sabin

1
adicionar essa verificação para garantir que você usá-lo apenas com o servidor local if( stristr("127.0.0.1",$_SERVER["SERVER_NAME"] ) || stristr("localhost",$_SERVER["SERVER_NAME"] )) curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
Hussain

20

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

$ cat intermediate.crt >> domain.crt

E repetido para todos os intermediários e o certificado raiz.


2
Eu tive um problema semelhante, exceto que meu Apache SSLCertificateChainFile foi definido como o certificado correto.
Wayne Piekarski 07/07

1
Note que se você fizer isso, eo CRT você está adicionando não têm um final de linha, então você vai ter linhas como -----END CERTIFICATE----------BEGIN CERTIFICATE-----em seu pacote, e você vai obter o erro obscuro:curl: (77) error setting certificate verify locations
Marty Neal

2
Estou usando certificados letsencrypt, mas implantei apenas o certificado e a chave privada no servidor. O Chrome e o curl no meu computador não estavam reclamando, no entanto, um aplicativo nodejs que eu estava construindo não aceitou o certificado. A implantação da cadeia completa no servidor corrigiu o problema! Obrigado por apontar a direção certa!
Paulo Santos

No meu caso (certificado da comodo), eles enviaram os certificados intermediários como my-domain.ca-bundle. Eu tive que anexar isso ao meu-domain.crt. Obrigado!
26618 Jon Hulka

18

Para mim, a instalação simples de certificados ajudou:

sudo apt-get install ca-certificates

2
Por exemplo, alguns contêineres pequenos do Docker podem não ter isso instalado e não há nenhum ponto para solucionar problemas quando o pacote inteiro não estiver presente.
muni764

16

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:

git config --global http.sslVerify false

mas se você tiver um certificado de domínio, adicione-o melhor (Win7)

C:\Program Files (x86)\Git\bin\curl-ca-bundle.crt

23
Funciona, mas parece esconder o sintoma, não curar a doença.
MonoThreaded

4
Desabilitar a verificação SSL é muito perigoso
jonasl

1
Você poderia --globalficar 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.
koppor 22/09/2015

13

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:

ln -s rootcert.pem `openssl x509 -hash -noout -em rootcert.pem`.0

que cria um softlink

60ff2731.0 -> rootcert.pem

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.


2
Ufa, isso ajudou. Para elaborar um pouco do que me ajudou: a) execute strace curl ... b) procure stat com falha () com algo-hex.0 c) pesquisei por algo-hex, encontrei o certificado correspondente d) coloque o certificado encontrado d) coloque o certificado encontrado em / usr / local / share / ca-certificates / (com extensão * .crt, como * .pem não funcionou) e) execute update-ca-certificates. Então Bingo! - symlink necessário foi automagicamente criado em / usr / lib / SSL / certs /
Não-Bugs Hare

11

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:21para depurar o problema.

Se apenas um certificado for retornado (autoassinado ou emitido), você deverá optar por:

  1. conserte o servidor
  2. confie nesse certificado e adicione-o à sua loja de certificados da CA (não é a melhor ideia)
  3. desativar a confiança, por exemplo curl -k(péssima idéia)

Se o servidor retornou, mais de um, mas não incluindo um certificado auto-assinado (raiz):

  1. instale o certificado CA (raiz) na sua loja CA para esta cadeia, por exemplo, pesquise no Google o emissor. ( SOMENTE se você confiar nessa autoridade de certificação)
  2. tenha o servidor fixo para enviar a CA como parte da cadeia
  3. confiar em um certificado na cadeia
  4. desativar a confiança

Se o servidor retornou um certificado de CA raiz, ele não está no seu armazenamento de CA, suas opções são:

  1. Adicione (confie)
  2. desativar a confiança

Eu ignorei certs expirados / revogados porque não havia mensagens indicando isso. Mas você pode examinar os fatos comopenssl 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.


6

De acordo com os documentos do cURL, você também pode passar o certificado para o curlcomando:

Obtenha um certificado de autoridade de certificação que possa verificar o servidor remoto e use a opção apropriada para indicar esse certificado de autoridade de certificação para verificação ao conectar-se. Para libcurlhackers:curl_easy_setopt(curl, CURLOPT_CAPATH, capath);

Com a ferramenta de linha de comando curl: --cacert [file]


Por exemplo:

curl --cacert mycertificate.cer -v https://www.stackoverflow.com

5

Pode ser suficiente apenas atualizar a lista de certificados

sudo update-ca-certificates -f

update-ca-certificates é um programa que atualiza o diretório / etc / ssl / certs para manter certificados SSL e gera ca-certificates.crt, uma lista concatenada de certificados de arquivo único.


fez e tudo é feito depois de executá-lo. Mas enrolar não está funcionando. ainda o mesmo erro.
AGamePlayer

1
Eu comandei, e não ajudou, e eu não podia acreditar que tenho que fazer tudo acima. E então sua resposta ... Obrigado pela sinalização '-f'.
Alex Shtromberg 11/01

1
Esta é a solução que eu vim também. +1
SS Anne

3

Tente reinstalar o curl no Ubuntu e atualize meus certificados de autoridade de certificação com os sudo update-ca-certificates --freshquais os certificados foram atualizados


2

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.


2

Sim, você precisa adicionar um certificado CA também. Adicionando um trecho de código no Node.js para uma visão clara.

var fs = require(fs)
var path = require('path')
var https = require('https')
var port = process.env.PORT || 8080;
var app = express();

https.createServer({
key: fs.readFileSync(path.join(__dirname, './path to your private key/privkey.pem')),
cert: fs.readFileSync(path.join(__dirname, './path to your certificate/cert.pem')),
ca: fs.readFileSync(path.join(__dirname, './path to your CA file/chain.pem'))}, app).listen(port)

2

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:

- abc.crt
- abc.pem
- abc-bunde.crt

No abc.crtarquivo, havia apenas um certificado:

-----BEGIN CERTIFICATE-----
/*certificate content here*/
-----END CERTIFICATE-----

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 certificateerro ao fazer a solicitação de ondulação.

Para corrigir esse erro, verifique seu abc-bunde.crtarquivo. Você provavelmente verá algo assim:

-----BEGIN CERTIFICATE-----
/*additional certificate content here*/
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
/*other certificate content here*/
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
/*different certificate content here*/
-----END CERTIFICATE-----

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:

-----BEGIN CERTIFICATE-----
/*certificate content here*/
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
/*additional certificate content here*/
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
/*other certificate content here*/
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
/*different certificate content here*/
-----END CERTIFICATE-----

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.



1

Meu caso foi diferente. Estou hospedando um site atrás de um firewall. O erro foi causado pelo pfSense.

Network layout: |Web Server 10.x.x.x| <-> |pfSense 49.x.x.x| <-> |Open Internet|

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 curlsolicitação para seu próprio servidor, apesar de usar o IP da WAN 49.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 tenha curlocorrido um erro.

Causa: O que aconteceu foi o curluso do endereço IP da WAN do site 49.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, curla solicitação foi tratada adequadamente pelo servidor da web e não encaminhada ao firewall que respondeu enviando a página de login.


0

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.


0
  1. Faça o download https://curl.haxx.se/ca/cacert.pem

  2. Após o download, mova esse arquivo para o seu servidor wamp.

    Para exp: D: \ wamp \ bin \ php \

  3. Em seguida, adicione a seguinte linha ao arquivo php.ini na parte inferior.

curl.cainfo = "D: \ wamp \ bin \ php \ cacert.pem"

  1. Agora reinicie o servidor wamp.

0

Você deve alterar o certificado do servidor de cert.pempara fullchain.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'


-1

Até agora, vi esse problema acontecer nas redes corporativas por dois motivos, um ou os dois podem estar acontecendo no seu caso:

  1. Por causa da maneira como os proxies de rede funcionam, eles têm seus próprios certificados SSL, alterando, assim, os certificados visualizados por ondulação. Muitas ou a maioria das redes corporativas forçam você a usar esses proxies.
  2. Alguns programas antivírus em execução nos PCs clientes também agem de maneira semelhante a um proxy HTTPS, para que possam verificar o tráfego da rede. Seu programa antivírus pode ter uma opção para desativar esta função (supondo que seus administradores o permitam).

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ê.


-1

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.


-1

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.

curl https://cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem
curl https://cacerts.digicert.com/DigiCertSHA2SecureServerCA.crt.pem

curl -v https://mydigisite.com/sign_on --cacert DigiCertCA.pem
...
*  subjectAltName: host "mydigisite.com" matched cert's "mydigisite.com"
*  issuer: C=US; O=DigiCert Inc; CN=DigiCert SHA2 Secure Server CA
*  SSL certificate verify ok.
> GET /users/sign_in HTTP/1.1
> Host: mydigisite.com
> User-Agent: curl/7.65.1
> Accept: */*
...

Eorekan teve a resposta, mas apenas eu e um outro votamos sua resposta.


-2

Especificamente para Windowsusuários, usando curl-7.57.0-win64-mingwou 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

  1. Clique com o botão direito do mouse no ícone do cadeado seguro
  2. Clique no certificado, ele abrirá uma janela com os detalhes do certificado
  3. Vá para a guia 'Caminho da certificação'
  4. Clique no certificado ROOT
  5. Clique em Ver certificado, ele abrirá outra janela de certificado
  6. Vá para a guia Detalhes
  7. Clique em Copiar para arquivo, ele abrirá o assistente de exportação
  8. Clique em Next
  9. Selecione 'X.509 codificado na Base-64 (.CER)'
  10. Clique em Next
  11. Dê um nome amigável, por exemplo, 'MyDomainX.cer' (navegue até o diretório desejado)
  12. Clique em Next
  13. Clique em Concluir, ele salvará o arquivo de certificado
  14. Agora abra isso .cer arquivo e copie o conteúdo (incluindo ----- BEGIN CERTIFICATE ----- e ----- END CERTIFICATE -----)
  15. Agora vá para o diretório em que curl.exe está salvo, por exemploC:\SomeFolder\curl-7.57.0-win64-mingw\bin
  16. Abra o curl-ca-bundle.crt arquivo com um editor de texto
  17. Anexe o texto do certificado copiado ao final do arquivo. Salve 

Agora, seu comando deve executar bem em curl.


3
Alguns comentários sobre a razão para downvote seria apreciada
Arghya C

Não encontro nenhum arquivo chamado "curl-ca-bundle.crt" em "C: \ xampp \ apache \ bin" (windows). Acho que os votos negativos foram devido a isso. Eu tenho meu "curl.exe" na pasta "bin" mencionada acima
kathikeyan A

-4

isso pode ajudá-lo a entender:

$client = new Client(env('API_HOST'));
$client->setSslVerification(false);

testado no guzzle / guzzle 3. *


-5

Solução simples: IN ~/.sdkman/etc/config , alterarsdkman_insecure_ssl=true

Etapas:
nano ~/.sdkman/etc/config
alteração sdkman_insecure_ssl=falsepara sdkman_insecure_ssl=true
salvar e sair

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.