Coldfusion10において、CFHTTPタグを使用時に、通信エラーが発生する事象はよく知られています。
同様の事象に対しての対処法として、JVM引数の追記、Certman(プログラム)による、SSL証明書の追加、Coldfusion アップデートやJAVA1.7への対応など様々な記事が見受けられますが、Coldfusionの運用環境によって改善されない場合も多いようです。
エラーの原因
この背景には古いバージョン(TSL1.0/1.1)のプロトコルでの仕様上の脆弱性が確認されたことにより、接続先側で古いSSLv3やTLS1.0、1.1 プロトコルでの接続を無効にした事などが背景にあげられ、JAVAのバージョンが古いと接続が拒否される(あるいは同サーバーでも)以下の様なエラーが発生します。
I/O Exception: sun.security.validator.ValidatorException: PKIX path building failed: java.security.cert.CertPathBuilderException: Could not build a validated path.
といったエラーが発生します。
対処方法
対処法としては、以下の通りです。
- ColdFusion 10は Update 14以降
- JAVAを1.8に変更
Coldfusion update は14以降で、TSL1.2に対応。
また、JAVAについては、「Server JRE (Java SE Runtime Environment) 8u151」を使用(安定稼働中)
JAVAの旧バージョンについては、
ORACLEサイトより入手可能ですが、提供が終了すると入手に苦労しますので、お手元にダウンロードファイルを保管されておくのが良いでしょう。
ORACLE
https://www.oracle.com/jp/java/technologies/javase/javase8-archive-downloads.html
JAVA導入手順
- 上記URLより、「Server JRE (Java SE Runtime Environment) 8u152(tar.gz)」をダウンロード
- WindowsServerの場合、server-jre-8u151-windows-x64.tar.gzを「C:\ ProgramFiles\Java」に保存し、解凍します。 これにより、jdk1.8.0_151という名前のフォルダーが作成されます。
- CF管理者にログインします
- サーバー設定>JavaおよびJVM
- [Java仮想マシンパス]をC:/ Program Files / Java / jdk1.8.0_151/jreに設定
- このフレーズを[JVM引数]に追加(半角スペース区切り):-Dhttps.protocols=TLSv1.2
改行で追記すると読み込みエラーでCFが起動しなくなる場合があります。 - 変更を送信する
- Coldfusionを再起動
再起動後、SSLでTLS1.2が使用され通信エラーが解消されます。