Documentação do Mercado Livre

Confira todas as informações necessárias sobre as APIs Mercado Livre.
circulos azuis em degrade

Documentação do

Última atualização em 06/04/2026

Infraestrutura: Criptografia e segurança de transporte

Toda comunicação entre o usuário final, a aplicação que se integra e as APIs do Mercado Livre trafega pela internet, uma rede pública onde os dados podem ser interceptados, lidos ou modificados por atacantes.

A criptografia de transporte (TLS) é a primeira linha de defesa que protege essa comunicação.

O que protegemos com TLS?

  • Interceptação de dados - Confidencialidade: os dados estarão criptografados, ilegíveis para terceiros.
  • Modificação em trânsito - Integridade: o TLS garante que as informações não foram modificadas durante o trânsito.
  • Autenticidade - Identidade do servidor: por meio dos certificados digitais, o TLS assegura ao usuário que o servidor remoto "é efetivamente quem diz ser", evitando que possam usar o nome da sua organização para construir sites de phishing.

Uma implementação incorreta do TLS pode resultar em:

  • Roubo de tokens de acesso (ATO).
  • Fuga de informações de clientes.
  • Manipulação não autorizada de dados.
  • Perda de confiança.
  • Descumprimento regulatório: PCI DSS, LGPD, GDPR, entre outras.

Requisitos de TLS

São necessárias versões seguras de TLS, tais como: TLS 1.3 (recomendado) ou TLS 1.2. As versões de TLS (1.0 e 1.1) possuem vulnerabilidades conhecidas que permitem a atacantes decifrar comunicações. Não é suficiente "ter HTTPS" - a versão e a configuração do protocolo são críticas.

Cipher suites recomendadas

Para TLS 1.3 (idealmente)

  • TLS_AES_256_GCM_SHA384
  • TLS_AES_128_GCM_SHA256
  • TLS_CHACHA20_POLY1305_SHA256

Para TLS 1.2 (aceitas)

  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256

Cipher suites não aceitas

Qualquer suite que use:

  • RC4 (vulnerável)
  • DES/3DES (fraco)
  • MD5 (broken)
  • CBC mode sem AEAD (vulnerável a padding oracle)
  • RSA key exchange sem ECDHE (sem forward secrecy)
  • NULL encryption
  • EXPORT ciphers

Visualização do problema

COM TLS 1.0 ou 1.1 (vulnerável):

Seu App --------------------------------► API MercadoLibre
         |
    [Atacante]
         |
         +-- Pode explorar vulnerabilidades conhecidas
             como BEAST, POODLE, etc. para decifrar
             seus tokens e dados.

COM TLS 1.2+ (seguro):

Seu App ════════════════════════════════► API MercadoLibre
         |
    [Atacante]
         |
         +-- Não pode decifrar a comunicação.
             Os dados estão protegidos.

Como verificar qual versão de TLS meu servidor usa?

Opção 1: usar o SSL Labs

  1. Acesse: https://www.ssllabs.com/ssltest/
  2. Insira o domínio da aplicação que se integra (ex: seuapp.com)
  3. Aguarde a avaliação ser concluída.
  4. Procure a seção "protocols"

Resultado no SSL Labs:

Resultado Ação
TLS 1.3: Yes, TLS 1.2: Yes, TLS 1.1: No, TLS 1.0: No ✅ Correto
TLS 1.1: Yes ou TLS 1.0: Yes ❌ Desabilitar versões antigas

Opção 2: verificar com comandos por meio de um terminal no servidor

# Verificar se TLS 1.3 está habilitado (recomendado)
openssl s_client -connect tudominio.com:443 -tls1_3

# Verificar se TLS 1.2 está habilitado (deve funcionar)
openssl s_client -connect tudominio.com:443 -tls1_2

# Verificar se TLS 1.1 está desabilitado (deve falhar)
openssl s_client -connect tudominio.com:443 -tls1_1

# Verificar se TLS 1.0 está desabilitado (deve falhar)
openssl s_client -connect tudominio.com:443 -tls1
Comando Resultado esperado Significa
-tls1_3 Conexão bem-sucedida ✅ TLS 1.3 habilitado (ideal)
-tls1_3 Erro de conexão ⚠️ TLS 1.3 não disponível (aceitável se TLS 1.2 funcionar). Recomenda-se habilitá-lo
-tls1_2 Conexão bem-sucedida ✅ TLS 1.2 habilitado (mínimo exigido)
-tls1_2 Erro de conexão ❌ TLS 1.2 não habilitado (problema grave), é necessário habilitá-lo
-tls1_1, -tls1 Erro de conexão ✅ TLS 1.1 desabilitado (correto). Caso contrário, deve ser desabilitado o mais rápido possível
Nota:
O parâmetro -tls1_3 requer OpenSSL 1.1.1 ou superior. Se sua versão do OpenSSL for anterior, atualize-a ou use o SSL Labs para verificar o TLS 1.3.

Requisitos de Certificados

O certificado digital é o "documento de identidade" de um servidor. Quando uma aplicação se conecta a https://api.mercadolibre.com, o certificado SSL permite verificar que ela está realmente se comunicando com o Mercado Livre e não com um atacante.

Desabilitar a validação de certificados é equivalente a:

  • Aceitar um documento de identidade sem olhar para a foto.
  • Assinar um contrato sem verificar quem o apresenta.
  • Entregar as chaves da sua casa a qualquer pessoa que diga ser o chaveiro.

É por isso que a aplicação que se integra deve:

Validar certificados

Sempre ter habilitada a opção de verificação de certificados em produção.

Com a validação de certificados desabilitada:

Seu app aceita QUALQUER certificado, inclusive um falso de um atacante.

Seu App ----------► [Atacante com cert falso] ----------► MercadoLibre
                            |
                            +-- Lê e modifica TUDO

Com a validação habilitada:

Seu app rejeita certificados inválidos ou falsos.

Seu App ══════════════════════════════════════════► MercadoLibre
             [Atacante] ✗ Não pode interceptar

Exemplos de más práticas e sua implementação correta.

Em Python:

# ❌ PERIGO!
requests.get(url, verify=False)

# ✅ A forma correta:
requests.get(url)  # Valida por padrão
# ou explicitamente:
requests.get(url, verify=True)

Em Node.js:

// ❌ PERIGO!
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'

// ✅ A forma correta é não fazer nada especial, valida por padrão.

Em PHP:

# ❌ PERIGO!
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

# ✅ A forma correta:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);

Para outras linguagens, procure estes padrões perigosos (exemplos comuns):

Linguagem Padrão perigoso Se encontrar:
Java TrustAllCerts e/ou HostnameVerifier que retorna true ❌ Problema grave, use o SSLContext padrão que já verifica corretamente
C#/.NET ServerCertificateValidationCallback = ... que retorna true ❌ Problema grave, recomenda-se não configurar nenhum callback pois usa validação padrão
Go InsecureSkipVerify: true ❌ Problema grave, use o cliente padrão que já verifica
cURL --insecure ou -k ❌ Verificar se é produção, remover a flag –insecure ou -k

Verificar hostname

O CN (Common Name) ou SAN (Subject Alternative Name) deve coincidir com o domínio ao qual você se conecta.

INCORRETO:

Você se conecta a: api.mercadolibre.com
Certificado diz: *.exemplo-atacante.com

→ Sem verificação de hostname, seu app aceita este certificado falso

CORRETO:

Você se conecta a: api.mercadolibre.com
Certificado diz: *.mercadolibre.com (coincide)

→ Seu app verifica que o nome coincide antes de continuar

Como validar?

A maioria das bibliotecas HTTP modernas verifica o hostname por padrão. Verifique que não foi desabilitado de forma explícita:

Linguagem Padrão perigoso Se encontrar:
Python assert_hostname=False ❌ Problema, elimine o padrão perigoso ou defina o valor como true
Node.js checkServerIdentity: () => undefined ❌ Problema, remova esta opção completamente
Java setHostnameVerifier(NoopHostnameVerifier) ❌ Problema, remova esta linha (use o verificador padrão)
Go InsecureSkipVerify: true ❌ Problema, remova esta linha (use o verificador padrão). Ou defina o valor como true

Verificar a validade de um certificado SSL

Para verificar datas de geração, datas de vencimento, hostname, versões de TLS, cipher suites e mais, podemos usar as ferramentas do SSL Labs.

O SSL Labs analisa seu servidor e fornece uma nota de A+ a T que resume o nível de segurança, onde A+ corresponde a um nível de segurança ótimo e T a um baixo nível de segurança.

Nota Significado O que fazer?
A+ Excelente, configuração ótima com HSTS ✅ Perfeito, não alterar nada
A Muito boa. Cumpre todas as melhores práticas ✅ Aceitável para produção
B Boa, mas com melhorias possíveis ⚠️ Revisar recomendações
C - T Configurações inseguras ❌ Corrigir antes de ir para produção

Exemplo: verificar o certificado do Mercado Livre:

  1. Acesse https://www.ssllabs.com/ssltest/
  2. Consulte por: api.mercadolibre.com
  3. Você verá a nota

Exemplo: verificar SEU certificado:

  1. Acesse https://www.ssllabs.com/ssltest/
  2. Consulte por: seu-dominio.com
  3. Você verá a nota: Se a nota for A ou B, estará pronto para produção. Se for C ou menor, você deve revisar as recomendações e, após corrigidas, realizar o teste novamente

Como verificar que minha aplicação que se integra cumpre com este requisito?

A segurança não é um estado, é um processo contínuo. Uma configuração que era segura ontem pode não ser hoje: os certificados expiram, são descobertas novas vulnerabilidades em cipher suites, as bibliotecas são atualizadas e alteram comportamentos padrão, código inseguro pode ser introduzido.

Por isso é importante perguntarmos periodicamente se:

  • Minha aplicação usa TLS 1.2 ou superior?
  • Tenho habilitada a validação de certificados?
  • Minhas dependências de SSL/TLS estão atualizadas?
  • Meu servidor possui certificado válido e vigente?
  • Estou verificando frequentemente as datas de alterações dos certificados?

Referências


Glossário

Termo Significado
TLS Transport Layer Security - Protocolo que criptografa a comunicação entre seu app e o servidor. Versões seguras: 1.2 e 1.3
SSL Secure Sockets Layer - Versão antiga do TLS, não é mais segura. Não confundir com TLS
HTTPS HTTP + TLS = Comunicação web criptografada. O "S" significa "Secure"
Certificado digital Documento eletrônico que verifica a identidade de um servidor (como uma carteira de identidade digital)
CA (Certificate Authority) Entidade confiável que emite certificados (ex: DigiCert, Let's Encrypt, Comodo)
Cipher Suite Conjunto de algoritmos usados para criptografar uma conexão


Próximo: Gestão de Identidades e Acessos.