3

SSLサーバーに送信する単純なcfhttpリクエスト(ログイン)があります。

<cfhttp url="https://www2.[domain].com/api/user/login" method="POST" port="443" >
    <cfhttpparam type="formfield" name="username" value="[username]" >
    <cfhttpparam type="formfield" name="password" value="[password]" >
</cfhttp>

リクエストは開始する前に失敗し、ColdFusionサーバーは次のように表示します。

I / O例外:ピアが認証されていません

どちらの開発環境も大胆に機能します。ログインセッションを受信し、それをコレクタープロセスに渡します。コレクタープロセスは、リモートWebサービスを正常に利用してデータを取得します。

正しい証明書をColdFusionストアに取り込むために一日を費やした後、実際にそれらを実際の開発環境と比較するという素晴らしいアイデアが浮かびました。私はそれら(keytool -list)を見ました、そしてそれらは同一です。

明らかなことが解消されたので、私が残した質問は2つあります。

  1. 確認する必要のある他の証明書リポジトリはありますか、または代わりに、ColdFusionに証明書INを見つけるために必要な証明書リポジトリを教えてもらうことができる場所がありますか(偶然に変更される可能性があります)、それも可能です。
  2. 他の人を特定して修正すると、これが発生している可能性があります。
4

2 に答える 2

7

開発環境と本番環境は同じですか? それらはすべて、たとえば、ColdFusion 9 Standard または ColdFusion 8 Enterprise ですか?

私の経験では、このエラーは通常、次の 2 つのいずれかが原因で発生します。

  1. 管理者が証明書を cacarts リポジトリにインストールできなかったか、間違ったリポジトリにインストールしました。

  2. ColdFusion Enterprise および ColdFusion Developer エディション (ColdFusion 8 および ColdFusion 9 の両方に対応していると思います) には、インストールされている組み込みの BSafe CryptoJ ライブラリと、特定の種類の証明書 (私はまだパターンを特定できていません) に問題があります。このエラーが発生します。この場合、いくつかの回避策があります。

まず、間違った証明書リポジトリにインポートしている可能性を探ります。どのリポジトリが使用されているかを判断するのは難しい場合があります。「Setting Summary」の下の CF Admin で、使用されている JRE の場所を見つけることができるはずです。「Java ホーム」の下に表示されます。そのディレクトリを取得lib/securityし、その末尾に追加します。これは、使用されている cacaerts ファイルの場所である必要があります。そうすべきだと言うのは、そうでない奇妙な状況を少なくとも1回見たからです。

于 2011-08-10T16:49:20.457 に答える
2

私は同じ問題を抱えていて、すべてを試しましたが、修正できません。奇妙なことに、すべてが正常に機能していたのに、突然機能しなくなりました。問題の原因となっているサーバー上の Java の更新、または CFHTTP がアクセスしようとしている Web サイトからの証明書の変更である可能性があります。

とにかく、これは私がこの問題の「デモ」のために設定したリンクです:

http://www.viaromania.eu/https.cfm

ご覧のとおり、CFHTTP タグを使用して HTTPS サービスにアクセスしようとしています。そして、それは機能していません。から証明書を削除しC:\ColdFusion9\runtime\jre\lib\security\cacerts、Web サイトの URL から新しい証明書を生成し、インポートして戻し、CFID/管理者の下に「certman」をインストールし、証明書を確認しました。証明書はそこにあります...テスト ページにリストされています。

テスト ページの一番下までスクロールすると、 https: //www.google.com への同様の CFHTTP が表示され、サーバーに証明書がインストールされていなくても、これは正常に機能します。

リクエストが私の開発マシンで完璧に機能していることに言及することは重要です。ここでは、証明書もインストールしていません...

そして、これが私がそれを修正した方法です

1. これで ColdFusion 9.0.2 を更新しました - https://helpx.adobe.com/coldfusion/kb/cumulative-hotfix-1-coldfusion-902.html

2.ここからJava JDK 1.7.0_79 をインストールしましたhttp://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

3. ColdFusion Administrator / Server Settings → Java and JVM の Java ホームを「C:\ColdFusion9\runtime\lib\jre」から「C:\Program Files\Java\jdk1.7.0_79\jre」に変更しました。

それでおしまい。証明書を使用しているかどうかはわかりません。それらは「C:\ColdFusion9\runtime\lib\jre\lib\security\cacerts」にインストールされ、そこから移動されていません。

于 2016-02-17T19:36:15.990 に答える