Centos 5.11 OpenSSL TLS 1.2 para Paypal

2

Eu corro um site em um servidor rodando o Centos 5.11 - EOL agora eu sei, mas uma atualização não é possível por um tempo. O site executa o software Sellerdeck, que se integra com o Paypal para pagamentos.

No próximo mês, mais ou menos, o Paypal exigirá que eu use o TLS 1.2 [1] para conexões com eles, o que não é suportado pela versão padrão do OpenSSL instalada em 5.11 (0.9.8b).

Eu segui as instruções [2] para instalar uma segunda versão do OpenSSL, e uma segunda versão do Curl vinculada à nova versão do OpenSSL, que suportará o TLS 1.2, mas ainda não passou no teste do Paypal. / p>

Centos 5.11 com OpenSSL 1.0.2k em / usr / local /:

/usr/local/bin/curl https://tlstest.paypal.com
curl: (35) Unknown SSL protocol error in connection to tlstest.paypal.com:443

Centos 6.9 com OpenSSL 1.0.1e-fips

curl https://tlstest.paypal.com
PayPal_Connection_OK

Alguém pode me ajudar a saber o porquê da conexão não estar funcionando com o OpenSSL atualizado?

Muito obrigado

Kevin

1 - link

2 -

Saída não produtiva detalhada:

/usr/local/bin/curl -Ivvv https://tlstest.paypal.com
* Rebuilt URL to: https://tlstest.paypal.com/
*   Trying 23.67.159.210...
* Connected to tlstest.paypal.com (23.67.159.210) port 443 (#0)
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* TLSv1.0, TLS handshake, Client hello (1):
* Unknown SSL protocol error in connection to tlstest.paypal.com:443
* Closing connection 0
curl: (35) Unknown SSL protocol error in connection to tlstest.paypal.com:443

Saída de trabalho detalhada:

curl -Ivvv https://tlstest.paypal.com
* About to connect() to tlstest.paypal.com port 443 (#0)
*   Trying 23.214.50.150... connected
* Connected to tlstest.paypal.com (23.214.50.150) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* SSL connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate:
*       subject: CN=tlstest.paypal.com,OU=CDN Support,O="PayPal, Inc.",STREET=2211 N 1st St,L=San Jose,ST=California,postalCode=95131-2021,C=US,serialNumber=3014267,businessCategory=Private     Organization,incorporationState=Delaware,incorporationCountry=US
*       start date: Nov 06 00:00:00 2015 GMT
*       expire date: Oct 26 23:59:59 2017 GMT
*       common name: tlstest.paypal.com
*       issuer: CN=Symantec Class 3 EV SSL CA - G3,OU=Symantec Trust     Network,O=Symantec Corporation,C=US
> HEAD / HTTP/1.1
> User-Agent: curl/7.19.7 (i386-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1     zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: tlstest.paypal.com
> Accept: */*
>
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Content-Type: text/html
Content-Type: text/html
< Content-Length: 20
Content-Length: 20
< Date: Sat, 06 May 2017 12:58:47 GMT
Date: Sat, 06 May 2017 12:58:47 GMT
< Connection: keep-alive
Connection: keep-alive
<
* Connection #0 to host tlstest.paypal.com left intact
* Closing connection #0
    
por Kevin W 06.05.2017 / 15:00

2 respostas

5

Doh, obrigado Hakan, tão simples.

ldd / usr / local / bin / curl mostrou que a nova curva para não está vinculada ao novo OpenSSL (esgotou o buffer de rolagem para copiar aqui).

Eu executei o configure, make e make install do curl:

ldd /usr/local/bin/curl
    linux-gate.so.1 =>  (0xb77be000)
    libcurl.so.4 => /usr/local/lib/libcurl.so.4 (0xb7764000)
    libssl.so.1.0.0 => /usr/local/ssl/lib/libssl.so.1.0.0 (0xb76fe000)
    libcrypto.so.1.0.0 => /usr/local/ssl/lib/libcrypto.so.1.0.0 (0xb7560000)
    libz.so.1 => /lib/libz.so.1 (0xb754d000)
    librt.so.1 => /lib/librt.so.1 (0xb7543000)
    libc.so.6 => /lib/libc.so.6 (0xb73e7000)
    libidn.so.11 => /usr/lib/libidn.so.11 (0xb73b6000)
    libdl.so.2 => /lib/libdl.so.2 (0xb73b1000)
    libpthread.so.0 => /lib/libpthread.so.0 (0xb7397000)
    /lib/ld-linux.so.2 (0xb77bf000)

e agora funciona:

/usr/local/bin/curl https://tlstest.paypal.com
PayPal_Connection_OK

Obrigado!

    
por 06.05.2017 / 15:14
2

Para qualquer pessoa que tenha problemas de EOL do CentOS 5 conectando-se a APIs com SSL mais recente, como o TLS 1.2:

Setup um linux barebones VPS separado e instalar nginx, usando proxy_pass como um proxy de duas vias entre o seu caixa e o endpoint da API.

Consegui fazer o nginx rodar como um proxy de túnel em questão de 30 minutos usando esse método. Não importa como você se conecta ao seu VPS (eu faço através de HTTP) e ele suporta todos os pacotes de criptografia SSL no final da API.

Aqui está o meu servidor padrão nginx:

server {
     listen 80 default_server config;
     listen [::]:80 default_server;
     access_log off;
     proxy_pass https://someAPIdomain.com;
}

É isso! Lembre-se de reiniciar o serviço nginx depois de alterar a configuração. É claro que você pode adicionar parâmetros adicionais para permitir apenas o IP do servidor do CentOS, alterar a porta de escuta e outras medidas de segurança / ofuscação se desejar.

    
por 19.01.2018 / 19:24