PHP+OpenSSLバージョンアップ
概要
ベリトランスモジュールのバージョンアップに際して
2016 年以内にSSL v3.0/TLS 1.0 無効化処理が必須となりました。
世界的なセキュリティ対策の一環として必須事項なので
ベリトランス以外の決済も、また決済以外でもシステムの対策必須です。
Google、SSL 3.0 の脆弱性「POODLE」を公表、SSL 3.0 は今後サポート廃止の意向
EC-CUBE でベリトランスの決済モジュールでは
PHP から OpenSSL ライブラリを利用して決済へ通信を実施しています。
その PHP の OpenSSL ライブラリを 1.0.1i 以上(最新が推奨)に
バージョンアップする必要があります。
対応する ToDo としては以下になります。
TLS1.1 以上を利用するには openssl 1.0.1i 以上を利用する必要アリ
→ openssl バージョンアップ (1.0.1i 以上)
→ PHP の再コンパイルし OpenSSL ライブラリ(1.0.1i 以上)をバージョンアップ
上記対応をまとめました。
※ Apache の SSL v3.0/TLS1.0 利用不可設定は別途
ググればすぐ出てきます ♪
環境
- CentOS release 6.6 (Final)
- PHP 5.3.9
- openssl 1.0.1g
手順
PHP で利用している OpenSSL のライブラリバージョン確認
これから PHP をコンパイルし直すので
OpenSSL support が disable でも問題ないです。
※今回では既にインストール済みであるというケースを想定しています。
1 | # php -i | grep OpenSSL |
PHP でで利用される OpenSSL Library, Header Version が 1.0.1g
であることが確認できました。
既存 openssl バックアップ
既にインストール済みかと思いますので
現行バージョンを一旦退避します。
1 | # openssl version |
何か不具合が発生した場合にまきもどせるように、念のためバックアップをとりました。
openssl バージョンアップ
ソースからビルドします。
1 | # cd /usr/local/src |
-fPIC は 動的共有オブジェクト(DSO)として mod_ssl をビルドし
PHP のバイナリ実行ファイルからフックして利用する為に必要、
と言ったところでしょうか。
openssl バージョンアップ確認
正しくバージョンアップされていることを確認しました。
1 | # openssl version |
PHP 再コンパイル
- 既存 PHP がどのように configure されているか確認
1 | # php -i | grep config |
--with-openssl
がない場合は上記のように追加します。
今回は既に指定済みです。
上記の conigure 情報を利用して
–with-openssl があることを確認した上で
再コンパイルします。
- 再コンパイル
1 | # cd /usr/local/src/php-5.3.9 |
以下のようなエラーが出る場合は、手順)「openssl バージョンアップ」をご確認下さい。
新たに openssl をソースからコンパイルしてビルドしたときなどに出るエラーです。
1 | configure: error: Cannot find OpenSSL's <evp.h> |
PHP で利用する OpenSSL ライブラリのバージョン確認
1 | # php -i | grep OpenSSL |
OpenSSL Library, Header Version が共に指定通りとなりました。
以上です。
PHP+OpenSSLバージョンアップ
https://kenzo0107.github.io/2016/02/22/2016-02-22-versionup-php-openssl/