Desativação da criptografia TLS 1.1 no Mercado Pago
No Mercado Pago procuramos sempre otimizar nossa plataforma oferecendo a mais alta eficiĂȘncia e segurança no processamento de pagamentos.
No momento, estamos trabalhando no desligamento do protocolo de criptografia TLS 1.1 para os domĂnios https://api.mercadopago.com e https://pagamento.mercadopago.com com o objetivo de manter os mais altos padrĂ”es de qualidade e promover a segurança de dados de nossos clientes.
Pontos para serem levados em conta
- Se vocĂȘ usa apenas Mercado Livre, essa alteração nĂŁo afetarĂĄ vocĂȘ.
- Se vocĂȘ usa apenas os botĂ”es de pagamento de Mercado Pago, essa alteração nĂŁo afetarĂĄ vocĂȘ.
- Se vocĂȘ usa apenas Mercado Shops, essa alteração nĂŁo afetarĂĄ vocĂȘ.
- Se vocĂȘ usa apenas VTEX, essa alteração nĂŁo afetarĂĄ vocĂȘ.
- Caso tenha seu prĂłprio e-commerce, consulte sua equipe de TI.
- Caso opere com alguma plataforma de e-commerce, como por exemplo: Magento, Shopify ou outros Consulte seu respectivo suporte técnico.
Introdução
TLS Ă© o acrĂŽnimo para "Transport Layer Security". Ă um protocolo que garante privacidade e integridade de dados entre dois aplicativos que se comunicam pela rede.
à o protocolo de segurança mais utilizado atualmente e é usado em navegadores e outros aplicativos que exigem que os dados sejam trocados com segurança em uma rede. O TLS garante que uma conexão entre dois pontos finais se realize através de criptografia e que os pontos de origem e destino tenham sua identidade verificada. As versÔes do TLS até o momento são TLS 1.0, 1.1 e 1.2 e 1.3.
As conexÔes de Internet e das APIs do Mercado Pago utilizam o protocolo TLS como um componente chave de sua segurança.
HTTPS (web) e STARTTLS SMTP (email), também usam o TLS como um componente de segurança.
Por que essa mudança serå feita?
No Mercado Pago levamos a segurança muito a sério e ajudamos nossos clientes a melhorå-la usando os protocolos de segurança mais recentes.
Ação necessåria para integraçÔes via API
Se suas integraçÔes que usam conexÔes de entrada com o Mercado Pago, não tiverem os protocolos TLS 1.1 e/ou TLS 1.2 ativados após essa alteração, elas começarão a falhar
Veja as diretrizes de compatibilidade abaixo:
Plataforma | Notas de Compatibilidade |
Java (Oracle) | CompatĂvel com a versĂŁo mais recente, independente do sistema operacional. |
Java 8 (1.8) y versĂ”es posteriores | CompatĂvel com a criptografia TLS 1.2 ou versĂ”es posteriores, por padrĂŁo. |
Java 7 (1.7) | Ative TLS 1.2 usando a propriedade do sistema Java https.protocols para HttpsURLConnection. Para ativar o TLS 1.2 em conexĂ”es sem HttpsURLConnection, defina os protocolos ativos nas instĂąncias criadas de SSLSocket e SSLEngine, no cĂłdigo-fonte do aplicativo. A mudança para o IBM Java, pode ser uma solução eficaz caso a atualização para uma versĂŁo mais recente do Oracle Java, nĂŁo seja possĂvel. |
Java 8 | CompatĂvel com a criptografia TLS 1.2 ou versĂ”es posteriores por padrĂŁo. VocĂȘ pode ter que configurar com.ibm.jsse2.overrideDefaultTLS = true, caso seu aplicativo ou uma biblioteca de chamadas use SSLContext.getinstance (TLS). |
Java 7 e versĂ”es posteriores; atualização de serviço 1 do Java 6.0.1 (J9 VM2.6) e versĂ”es posteriores; e a atualização de serviço 10 do Java 6 e versĂ”es posteriores. | Ative o TLS 1.2 usando a propriedade do sistema Java https.protocols para HttpsURLConnection e a propriedade do sistema Java com.ibm.jsse2.overrideDefaultProtocol para conexĂ”es SSLSocket e SSLEngine, conforme recomendado pela documentação da IBM. VocĂȘ tambĂ©m pode ter que configurar com.ibm.jsse2.overrideDefaultTLS = true. |
.NET | CompatĂvel com a versĂŁo mais recente quando executado em um sistema operacional que suporte TLS 1.2 |
.NET 4.6 e versĂ”es posteriores | CompatĂvel com criptografia TLS 1.2 ou versĂ”es posteriores por padrĂŁo. |
.NET 4.5 à 4.5.2 | O .NET 4.5, 4.5.1 e 4.5.2 não ativam TLS 1.2 por padrão. Existem duas opçÔes para ativå-las, conforme descrito abaixo. |
.NET 4.0 | O .NET 4.0 nĂŁo ativa o TLS 1.2 por padrĂŁo. Para configurar o TLS 1.2 como padrĂŁo, Ă© possĂvel instalar o .NET Framework 4.5 ou posterior e definir o valor DWORD de SchUseStrongCrypto como 1 nas duas seguintes chaves do registro do sistema. Caso essas chaves nĂŁo existam, Ă© necessĂĄrio criĂĄ-las: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ .NETFramework \ v4.0.30319 e HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ .NETFramework \ v4.0.30319. Essas chaves de registro podem ativar o TLS 1.2 por padrĂŁo em todos os aplicativos .NET 4.0, 4.5, 4.5.1 e 4.5.2 instalados nesse sistema. Recomendamos testar essa alteração antes de implementĂĄ-la em seus servidores de produção. Isso tambĂ©m estĂĄ disponĂvel como um arquivo de importação para o registro do sistema, porĂ©m essas configuraçÔes de registro do sistema nĂŁo afetarĂŁo os aplicativos .NET que definem o valor System.Net.ServicePointManager.SecurityProtocol. |
.NET 3.5 e versĂ”es anteriores | NĂŁo sĂŁo compatĂveis com criptografia TLS 1.2 ou versĂ”es posteriores |
Python | CompatĂvel com a versĂŁo mais recente, quando executado em um sistema operacional que suporte TLS 1.2 |
Python 2.7.9 e versĂ”es posteriores | CompatĂvel com criptografia TLS 1.2 ou versĂ”es posteriores por padrĂŁo. |
Python 2.7.8 e versĂ”es anteriores | NĂŁo sĂŁo compatĂveis com criptografia TLS 1.1 ou versĂ”es posteriores. |
Ruby | CompatĂvel com a versĂŁo mais recente e estĂĄvel quando estĂĄ vinculado ao OpenSSL 1.0.1 ou versĂ”es posteriores. |
Ruby 2.0.0 | O TLS 1.2 Ă© ativado por padrĂŁo quando usado com o OpenSSL 1.0.1 ou posterior. O uso dos sĂmbolos: TLSv1_2 com ssl_version do SSLContext, ajuda a garantir que o TLS 1.1 ou versĂ”es anteriores sejam desativadas. |
Ruby 1.9.3 e versĂ”es anteriores | O sĂmbolo: TLSv1_2 nĂŁo existe na versĂŁo 1.9.3 nem anteriores, mas Ă© possĂvel corrigir o Ruby para adicionar esse sĂmbolo e compilar o Ruby com o OpenSSL 1.0.1 ou posterior. |
Android 5.x e versÔes posteriores | TLS 1.2 é suportado por padrão. |
Como verificar a versĂŁo atual do TLS?
Para validar se sua integração estå mantendo uma conexão usando um protocolo diferente do TLS 1.2, utilize um dos seguintes trechos dentro de seu aplicativo para verificar qual protocolo é usado por padrão para conexÔes.
<?php
$curl_info = curl_version();
echo "protocol: " . $curl_info['ssl_version'];
?>
SSLSocket ss = (SSLSocket) SSLSocketFactory.getDefault().createSocket("api.mercadopago.com", 443);
System.out.println("protocol: " + ss.getSession().getProtocol());
string strWebsiteName = "api.mercadopago.com";
TcpClient _myClient = new TcpClient();
SslStream _myStream;
_myClient.Connect(strWebsiteName, 443);
_myStream = new SslStream(_myClient.GetStream());
_myStream.AuthenticateAsClient(strWebsiteName);
Console.WriteLine("protocol : " + _myStream.SslProtocol);