web-dev-qa-db-ja.com

CFHTTPは要求されたターゲットへの有効な証明書パスを見つけることができません

私はウェブサイトからデータをスクレイピングしようとしています、他のhttpsサイトは機能し、これは先週は機能していましたが、今は失敗します

<cfhttp url="https://www.cliftoncameras.co.uk/all-brands-and-types-of-used-cameras/"></cfhttp>

Cfhttpのダンプを実行すると

例外:PKIXパスの構築に失敗しました:Sun.security.provider.certpath.SunCertPathBuilderException:要求されたターゲットへの有効な証明書パスが見つかりません

最新のJREバージョン12で実行してみました-変更なし

https://helpx.Adobe.com/coldfusion/kb/import-certificates-certificate-stores-coldfusion.html

CFの元のJREに戻し、ターゲットSSL証明書をダウンロードして、keytoolを使用してインストールしました-変更なし

c:\ ColdFusion2018\jre\bin\keytool -import -keystore cacerts -alias cliftoncameras -file c:\ ColdFusion2018\jre\lib\security\cliftoncameras.cer

CFAdminのWebSocketをプロキシに変更しました-変更なし

毎回CFアプリケーションサーバーを再起動しました。

他に何ができますか?

2
Daniel Cook

私の開発プラットフォームで追加しました

-Dcom.Sun.security.enableAIAcaIssuers=true

ColdFusion2018\cfusion\bin\jvm.configにあるファイルのJava.args

次にCFアプリケーションサーバーを再起動すると、CFHTTP呼び出しが成功します。

このソリューションについて@agreaxに感謝

@sevrobertsのおかげで、うまくいかなかったとしても、答えはおそらく正しいものでした。本番ホストはSSL証明書をキーストアにインストールし、この方法で正常に解決しました。彼らは言った:

FireFoxブラウザーを使用し、cfhttpリクエストへのアクセスを許可するURLを参照しているときにロックアイコンをクリックすると、詳細情報を取得して[証明書の表示]オプションをクリックできます。チェーンではなく、PEM(証明書)をダウンロードする必要があります。ダウンロードしたら、キーストアにインポートするためにキーツールを実行する必要があります。

ColdFusionのJVM内でデフォルトのJREを使用している場合は、開発マシンにJDKをインストールする必要があります。 SSLをストアにインポートするためのコマンドプロンプトからのコマンドに関して、Wikiに記載されている詳細と手順を確認できます。 https://wiki.hostek.com/ColdFusion_Tips_%26_Tricks#Fixing_cfhttp_Connection_Failures_with_Keytool

@alexbabanのおかげで彼の回避策は機能しましたが、タグcfexecuteを使用する必要があるため、実装できなかったソリューションでした。

1
Daniel Cook