私はウェブサイトからデータをスクレイピングしようとしています、他の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アプリケーションサーバーを再起動しました。
他に何ができますか?
私の開発プラットフォームで追加しました
-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を使用する必要があるため、実装できなかったソリューションでした。