Centos 5.11-EOLを実行しているサーバーでWebサイトを実行していますが、EOLはわかっていますが、しばらくの間はアップグレードできません。ウェブサイトは、支払いのためにPaypalと統合するSellerdeckソフトウェアを実行しています。
翌月かそこらで、Paypalはそれらへの接続にTLS 1.2 [1]を使用するように要求します。これは5.11(0.9.8b)にインストールされたデフォルトのOpenSSLバージョンではサポートされていません。
指示[2]に従ってOpenSSLの2番目のバージョンと、TLS 1.2をサポートする新しいバージョンのOpenSSLにリンクされた2番目のバージョンのCurlをインストールしましたが、Paypalテストに合格しません。
Centos 5.11とOpenSSL 1.0.2k/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とOpenSSL 1.0.1e-fips
curl https://tlstest.Paypal.com
Paypal_Connection_OK
更新されたOpenSSLで接続が機能しない理由について誰かが私を正しい方向に向けるのを手伝ってくれる?
どうもありがとう
ケビン
詳細な非稼働出力:
/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
詳細な作業出力:
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
どうも、ハカンさん、とてもシンプルです。
ldd/usr/local/bin/curlはnotへの新しいcurlが新しいOpenSSLにリンクされていることを示しました(ここにコピーするためにスクロールバッファーが不足しています)。
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)
そして今それは動作します:
/usr/local/bin/curl https://tlstest.Paypal.com
Paypal_Connection_OK
ありがとうございました!
CentOS 5 EOLでTLS 1.2などの新しいSSLを使用してAPIに接続する際に問題が発生する場合:
ボックスとAPIエンドポイント間の双方向プロキシとしてproxy_passを使用して、別個のベアボーンLinux VPSをセットアップし、nginxをインストールします。 =
この方法を使用すると、nginxをトンネルプロキシとして30分程度で実行できました。 VPSへの接続方法(私はHTTPを介して行います)は問題ではなく、API側のすべてのSSL暗号スイートをサポートしています。
これが私のnginxデフォルトサーバーです:
server {
listen 80 default_server config;
listen [::]:80 default_server;
access_log off;
proxy_pass https://someAPIdomain.com;
}
それでおしまい!設定を変更した後は、nginxサービスを必ず再起動してください。もちろん、追加のパラメーターを追加して、CentOSサーバーのIPのみを許可したり、必要に応じて、リスニングポートを変更したり、その他のセキュリティ/難読化対策を行ったりできます。