こんにちは、ディーネットの山田です。
目次
前置き
さて、昨今はCPUに脆弱性が報告されたりとセキュリティの話題に沸いている
2018年ですがクレジット決済周りの暗号化通信方式にもTLS1.2化という
大きなアップデートを迎えようとしています。
なぜ、TLS1.2化されてしまうの?
PCI DSS v3.2(PCIデータセキュリティスタンダード)というセキュリティ基準が
あって、2018年06月30日以降はTLS1.1以前を使うことが禁止されます。
リンク
PCI DSSとは
加盟店やサービスプロバイダにおいて、クレジットカード会員データを安全に取り扱う事を
目的として策定された、クレジットカード業界のセキュリティ基準です。Payment Card Industry Data Security Standardの頭文字をとったもので、
国際カードブランド5社(American Express、Discover、JCB、MasterCard、VISA)が
共同で設立したPCI SSC(Payment Card Industry Security Standards Council)に
よって運用、管理されています
引用どんな影響が出るの?
curlなどに付随する暗号化ライブラリがTLS1.2に対応していなければ通信
できないため、アプリケーションなどからのクレジット決済処理が行えなく
なる恐れが考えられます。では検証を含めてアップデートを進めてみる
用意したOS環境
# cat /etc/redhat-release CentOS release 6.3 (Final)
用意したアーキテクチャ
# uname -m x86_64
用意した環境にインストールされているそれぞれのバージョン
# rpm -qa --queryformat="%{NAME:shescape},%{VERSION:shescape}\n" | egrep -i -w "curl|nss|libcurl" 'nss','3.13.3' 'curl','7.19.7' 'nss-softokn-freebl','3.12.9' 'nss-util','3.13.3' 'nss-softokn','3.12.9' 'nss-sysinit','3.13.3' 'nss-tools','3.13.3' 'libcurl','7.19.7'
事前検証
paypalさんにTLS1.2に限定されたAPIURLがあるので、これを利用させて頂く
PHPの簡単なプログラムを書いた。<?php $ch = curl_init("https://api-3t.sandbox.paypal.com/"); if (curl_exec($ch) === false) { var_dump(curl_errno($ch)); var_dump(curl_error($ch)); } curl_close($ch); ?>
これを実行すると
int(35) string(17) "SSL connect error"
-> ライブラリ等がTLS1.2に対応していないので、当然エラーになる。
アップデート作業
CentOS6系では、curlの暗号化ライブラリにNSSが標準で用いられていますが
このバージョンが、3.19.1-6以降であればTLS1.2に標準で対応している
ので、yumコマンドでアップデートを行います。* 水 11月 18 2015 Elio Maldonado
- 3.19.1-6 - Resolves: Bug 1272504 - Enable TLS 1.2 as the default in nss アップデートがあるか確認
# yum info nss.x86_64 Loaded plugins: fastestmirror, security Loading mirror speeds from cached hostfile * base: ftp.riken.jp * extras: ftp.riken.jp * updates: ftp.riken.jp Installed Packages Name : nss Arch : x86_64 Version : 3.13.3 Release : 6.el6 Size : 2.4 M Repo : installed From repo : anaconda-CentOS-201207061011.x86_64 Summary : Network Security Services URL : http://www.mozilla.org/projects/security/pki/nss/ License : MPLv1.1 or GPLv2+ or LGPLv2+ Description : Network Security Services (NSS) is a set of libraries designed to : support cross-platform development of security-enabled client and : server applications. Applications built with NSS can support SSL v2 : and v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 : v3 certificates, and other security standards. Available Packages Name : nss Arch : x86_64 Version : 3.28.4 Release : 4.el6_9 Size : 879 k Repo : updates Summary : Network Security Services URL : http://www.mozilla.org/projects/security/pki/nss/ License : MPLv2.0 Description : Network Security Services (NSS) is a set of libraries designed to : support cross-platform development of security-enabled client and : server applications. Applications built with NSS can support SSL v2 : and v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 : v3 certificates, and other security standards.
アップデートする
# yum update nss.x86_64 Loaded plugins: fastestmirror, security Loading mirror speeds from cached hostfile * base: ftp.riken.jp * extras: ftp.riken.jp * updates: ftp.riken.jp Setting up Update Process Resolving Dependencies --> Running transaction check ---> Package nss.x86_64 0:3.13.3-6.el6 will be updated --> Processing Dependency: nss = 3.13.3-6.el6 for package: nss-tools-3.13.3-6.el6.x86_64 --> Processing Dependency: nss = 3.13.3-6.el6 for package: nss-sysinit-3.13.3-6.el6.x86_64 ---> Package nss.x86_64 0:3.28.4-4.el6_9 will be an update --> Processing Dependency: nss-util >= 3.28.3 for package: nss-3.28.4-4.el6_9.x86_64 --> Processing Dependency: nss-softokn(x86-64) >= 3.14.3-22 for package: nss-3.28.4-4.el6_9.x86_64 --> Processing Dependency: nspr >= 4.13.0 for package: nss-3.28.4-4.el6_9.x86_64 --> Processing Dependency: libnssutil3.so(NSSUTIL_3.24)(64bit) for package: nss-3.28.4-4.el6_9.x86_64 --> Processing Dependency: libnssutil3.so(NSSUTIL_3.21)(64bit) for package: nss-3.28.4-4.el6_9.x86_64 --> Processing Dependency: libnssutil3.so(NSSUTIL_3.17.1)(64bit) for package: nss-3.28.4-4.el6_9.x86_64 --> Processing Dependency: libnssutil3.so(NSSUTIL_3.15)(64bit) for package: nss-3.28.4-4.el6_9.x86_64 --> Processing Dependency: libnssutil3.so(NSSUTIL_3.14)(64bit) for package: nss-3.28.4-4.el6_9.x86_64 --> Running transaction check ---> Package nspr.x86_64 0:4.9-1.el6 will be updated ---> Package nspr.x86_64 0:4.13.1-1.el6 will be an update ---> Package nss-softokn.x86_64 0:3.12.9-11.el6 will be updated ---> Package nss-softokn.x86_64 0:3.14.3-23.3.el6_8 will be an update --> Processing Dependency: nss-softokn-freebl(x86-64) >= 3.14.3-23.3.el6_8 for package: nss-softokn-3.14.3-23.3.el6_8.x86_64 ---> Package nss-sysinit.x86_64 0:3.13.3-6.el6 will be updated ---> Package nss-sysinit.x86_64 0:3.28.4-4.el6_9 will be an update ---> Package nss-tools.x86_64 0:3.13.3-6.el6 will be updated ---> Package nss-tools.x86_64 0:3.28.4-4.el6_9 will be an update ---> Package nss-util.x86_64 0:3.13.3-2.el6 will be updated ---> Package nss-util.x86_64 0:3.28.4-1.el6_9 will be an update --> Running transaction check ---> Package nss-softokn-freebl.x86_64 0:3.12.9-11.el6 will be updated ---> Package nss-softokn-freebl.x86_64 0:3.14.3-23.3.el6_8 will be an update --> Finished Dependency Resolution Dependencies Resolved ============================================================================================= Package Arch Version Repository Size ============================================================================================= Updating: nss x86_64 3.28.4-4.el6_9 updates 879 k Updating for dependencies: nspr x86_64 4.13.1-1.el6 base 114 k nss-softokn x86_64 3.14.3-23.3.el6_8 base 262 k nss-softokn-freebl x86_64 3.14.3-23.3.el6_8 base 168 k nss-sysinit x86_64 3.28.4-4.el6_9 updates 51 k nss-tools x86_64 3.28.4-4.el6_9 updates 447 k nss-util x86_64 3.28.4-1.el6_9 updates 68 k Transaction Summary ============================================================================================= Upgrade 7 Package(s) Total download size: 1.9 M Is this ok [y/N]: y Downloading Packages: (1/7): nspr-4.13.1-1.el6.x86_64.rpm | 114 kB 00:00 (2/7): nss-3.28.4-4.el6_9.x86_64.rpm | 879 kB 00:00 (3/7): nss-softokn-3.14.3-23.3.el6_8.x86_64.rpm | 262 kB 00:00 (4/7): nss-softokn-freebl-3.14.3-23.3.el6_8.x86_64.rpm | 168 kB 00:00 (5/7): nss-sysinit-3.28.4-4.el6_9.x86_64.rpm | 51 kB 00:00 (6/7): nss-tools-3.28.4-4.el6_9.x86_64.rpm | 447 kB 00:00 (7/7): nss-util-3.28.4-1.el6_9.x86_64.rpm | 68 kB 00:00 --------------------------------------------------------------------------------------------- Total 4.9 MB/s | 1.9 MB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Updating : nspr-4.13.1-1.el6.x86_64 1/14 Updating : nss-util-3.28.4-1.el6_9.x86_64 2/14 Updating : nss-softokn-freebl-3.14.3-23.3.el6_8.x86_64 3/14 Updating : nss-softokn-3.14.3-23.3.el6_8.x86_64 4/14 Updating : nss-sysinit-3.28.4-4.el6_9.x86_64 5/14 Updating : nss-3.28.4-4.el6_9.x86_64 6/14 Updating : nss-tools-3.28.4-4.el6_9.x86_64 7/14 Cleanup : nss-tools-3.13.3-6.el6.x86_64 8/14 Cleanup : nss-sysinit-3.13.3-6.el6.x86_64 9/14 Cleanup : nss-3.13.3-6.el6.x86_64 10/14 Cleanup : nss-softokn-3.12.9-11.el6.x86_64 11/14 Cleanup : nss-util-3.13.3-2.el6.x86_64 12/14 Cleanup : nspr-4.9-1.el6.x86_64 13/14 Cleanup : nss-softokn-freebl-3.12.9-11.el6.x86_64 14/14 Verifying : nss-tools-3.28.4-4.el6_9.x86_64 1/14 Verifying : nss-3.28.4-4.el6_9.x86_64 2/14 Verifying : nss-softokn-3.14.3-23.3.el6_8.x86_64 3/14 Verifying : nss-softokn-freebl-3.14.3-23.3.el6_8.x86_64 4/14 Verifying : nspr-4.13.1-1.el6.x86_64 5/14 Verifying : nss-util-3.28.4-1.el6_9.x86_64 6/14 Verifying : nss-sysinit-3.28.4-4.el6_9.x86_64 7/14 Verifying : nspr-4.9-1.el6.x86_64 8/14 Verifying : nss-3.13.3-6.el6.x86_64 9/14 Verifying : nss-sysinit-3.13.3-6.el6.x86_64 10/14 Verifying : nss-tools-3.13.3-6.el6.x86_64 11/14 Verifying : nss-util-3.13.3-2.el6.x86_64 12/14 Verifying : nss-softokn-3.12.9-11.el6.x86_64 13/14 Verifying : nss-softokn-freebl-3.12.9-11.el6.x86_64 14/14 Updated: nss.x86_64 0:3.28.4-4.el6_9 Dependency Updated: nspr.x86_64 0:4.13.1-1.el6 nss-softokn.x86_64 0:3.14.3-23.3.el6_8 nss-softokn-freebl.x86_64 0:3.14.3-23.3.el6_8 nss-sysinit.x86_64 0:3.28.4-4.el6_9 nss-tools.x86_64 0:3.28.4-4.el6_9 nss-util.x86_64 0:3.28.4-1.el6_9 Complete!
事後検証
先ほど使った、PHPのスクリプトを実行するとエラーなくHTTPの通信が出来たことを確認します。
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>404 Not Found</title> </head><body> <h1>Not Found</h1> <p>The requested URL /cgi-bin/ppapi was not found on this server.</p> <p>Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.</p> <hr> <address>Apache Server at <a href="mailto:ppmtps@paypal.com">api-3t.sandbox.paypal.com</a> Port 443</address> </body></html>
まとめ
curlの暗号化ライブラリにNSSが使われている場合は、yumコマンドで簡単にアップデート出来ました。
サーバ再起動も不要なので、特にダウンタイムを設けて行う必要もなさそうです。
※シビアな方は、念のためダウンタイムを設けた方が確実かと思います。備考
CentOS6系以降であれば、yumで暗号化ライブラリをアップデートすることでTLS1.2に対応
させることのできる余地があります。
しかし、CentOS5系以前ではTLS1.2に対応した暗号化ライブラリをyumではインストールできず
(OSのサポートがそもそも終了している)ソースコードからコンパイルすることになりますが、
curlそのものをコンパイルする必要やその他依存するミドルウェアに影響がないか配慮する
必要が出てくるので、このタイミングで出来れば、CentOS6系や7系へのリプレイスをおすすめ
します。