EC-CUBEなどでPayPalなどのカード決済サービスのプラグインを利用している方も多いと思います。
利用にあたっては、TLS1.2への対応が必須となりました。
CentOS6やCentOS7のサーバであれば全く問題なくyumアップデートで対応できるのですが、CentOS5などOpenSSL、cURL、PHPがRPMでインストールされていてバージョンアップが難しい場合のクライアント側のTLS1.2対応について以下にまとめてみました。
ニッチな要件だと思いますが、ニーズがあれば幸いです。
条件:TLS1.2クライアントをCGI版のPHPを.htaccessにて利用すること
はい。RPM版でのTLS1.2対応は依存関係など大変過ぎるので、ソースからCGI版PHPをインストールします。
各ソースファイルは事前に/usr/local/src/ 以下に置いておく(どこでも良い)
①opensslのインストール
1 2 3 4 5 6 7 8 |
# cd /usr/local/src/ # tar zxf openssl-1.0.2o.tar.gz # cd openssl-1.0.2o # ./config shared --prefix=/usr/local/openssl-1.0.2o # make # make install # echo /usr/local/openssl-1.0.2o/lib >> /etc/ld.so.conf # ldconfig |
②curlのインストール
1 2 3 4 5 6 |
# cd /usr/local/src/ # tar zxf curl-7.56.1.tar.gz # cd curl-7.56.1 # ./configure --enable-libcurl-option --with-ssl --prefix=/usr/local/curl-7.56.1 # make # make install |
③phpのインストール
1 2 3 4 5 6 7 8 9 10 |
# cd /usr/local/src/ # tar zxf php-5.6.37.tar.gz # cd php-5.6.37 # ./configure --prefix=/usr/local/php56tls --enable-cgi --with-openssl --with-openssl-dir=/usr/local/openssl-1.0.2o --with-curl=/usr/local/curl-7.56.1/lib ※--enable-mbstringや--with-mysqlなどのオプションは必要に応じて追加してください。 # make # make install # cp php.ini-production /usr/local/php56tls/lib/php.ini ※php.ini は適宜修正 # cp -a /usr/local/php56tls/bin/php-cgi /var/www/php-bin/php56tls-cgi |
④httpd.conf に以下の記述を追加
1 |
ScriptAlias /php-bin/ "/var/www/php-bin/" |
⑤.htaccess で以下のように記述
1 2 3 |
# PHP5.6 Action php-script-5.6 /php-bin/php56tls-cgi AddHandler php-script-5.6 .php |
■phpinfoで確認
項目 curl
SSL Version OpenSSL/1.0.2o
※cURL Informationは7.15.5というRPMのバージョンが表示されてしまうが問題なし
項目 openssl
OpenSSL Library Version OpenSSL 1.0.2o 27 Mar 2018
■コマンドラインで確認
1 2 |
# /usr/local/php56tls/bin/php -r '$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://tlstest.paypal.com/"); var_dump(curl_exec($ch));' PayPal_Connection_OKbool(true) が表示されればOK |
もしくは、
1 2 |
# /usr/local/curl-7.56.1/bin/curl https://tlstest.paypal.com/ PayPal_Connection_OK が表示されればOK |
まとめ
いかがでしたでしょうか?
CentOS7などの現在アップデートされているOSに乗せ換えるのが最適な対応策ですが、なかなかそうもいかない事情がある方もいらっしゃると思います。そんな中での苦肉の策でした。