ColdFusion CFHTTP I / O例外:ピアが認証されていません-証明書をキーストアに追加した後でも



Coldfusion Cfhttp I O Exception



解決:

私の同僚は、サードパーティに接続したときに同じ問題が発生した後、次のことを発見しました。

http://www.coldfusionjedi.com/index.cfm/2011/1/12/Diagnosing-a-CFHTTP-issue--peer-not-authenticated



https://www.raymondcamden.com/2011/01/12/Diagnosing-a-CFHTTP-issue-peer-not-authenticated/

ページのさらに下のPeteFreitagによるコメントで提供されたソリューションを使用しました。これは機能しますが、JsafeJCEプロバイダーの特定のプロパティを動的に削除および追加し直す必要があるため、注意して使用する必要があると思います。



アーカイブのために、PeteFreitagのコメントの元の内容は次のとおりです。

これをもう少し絞り込み、RSA JsafeJCEプロバイダーからKeyAgreement.DiffieHellmanを削除しました(これにより、デフォルトのSun実装が代わりに使用されます)シームが機能し、おそらくサーバーへの影響は、プロバイダー全体がそうします。方法は次のとおりです。

http呼び出しを行いますが、必要に応じて鍵共有をパックします。

SSLSocketFactoryを使用してhttps接続を作成することでこれを理解しました。これにより、cfhttpを使用する場合よりもスタックトレースに詳細が表示されます。



yadayadayada原因:java.security.InvalidKeyException:com.rsa.jsafe.provider.JS_KeyAgree.engineGenerateSecret(Unknown Source)at javax.crypto.KeyAgreement.generateSecret(DashoA13 * ..)atcomでアルゴリズムTlsPremasterSecretの秘密鍵を構築できません.sun.net.ssl.internal.ssl.DHCrypt.getAgreedSecret(DHCrypt.java:166)

ColdFusionからスローされた例外が少し一般的でない場合は、すばらしいでしょう。


最新のSSL暗号を使用するWebサーバーを使用したColdFusion8に固有:

JDK1.6.45でcoldfusion8を使用していますが、画像の代わりに赤い十字だけが表示され、cfhttpがsslでローカルWebサーバーに接続できないという問題がありました。

coldfusion8で再現するテストスクリプトは

  

これにより、「I / O例外:ピアが認証されていません」という非常に一般的なエラーが発生しました。次に、ルート証明書と中間証明書を含むサーバーの証明書をJavaキーストアとColdfusionキーストアに追加しようとしましたが、何も役に立ちませんでした。それから私は問題をデバッグしました

java SSLPoke www.onlineumfragen.com 443

そして得た

javax.net.ssl.SSLException:java.lang.RuntimeException:DHキーペアを生成できませんでした

原因:java.security.InvalidAlgorithmParameterException:プライムサイズは64の倍数である必要があり、java.securityのcom.sun.crypto.provider.DHKeyPairGenerator.initialize(DashoA13 * ..)では512〜1024(両端を含む)の範囲でのみ使用できます。 .KeyPairGenerator $ Delegate.initialize(KeyPairGenerator.java:627)at com.sun.net.ssl.internal.ssl.DHCrypt。(DHCrypt.java:107)... 10詳細

次に、Webサーバー(私の場合はApache)がssl用の非常に最新の暗号を持ち、非常に制限的で(qualysスコアa +)、1024ビットを超える強力なdiffiehellmannキーを使用するという考えがありました。明らかに、coldfusionとjava jdk1.6.45はこれを管理できません。 odyseeの次のステップは、Javaの代替セキュリティプロバイダーをインストールすることを考えることでした。そして、私は弾力がある城を選ぶことにしました。 http://www.itcsolutions.eu/2011/08/22/how-to-use-bouncy-castle-cryptographic-api-in-netbeans-or-eclipse-for-java-jse-projects/も参照してください。

次に、

bcprov-ext-jdk15on-156.jar

http://www.bouncycastle.org/latest_releases.htmlから、C: jdk6_45 jre lib extの下にインストールするか、jdkがどこにあっても、coldfusion 8の最初のインストールではC: JRun4 の下にインストールします。 jre lib extですが、coldfusionディレクトリの外にある新しいjdk(1.6.45)を使用しています。 bcprov-ext-jdk15on-156.jarを extディレクトリに配置することが非常に重要です(これには約2時間かかり、髪の毛もあります;-)次に、ファイルC: jdk6_45 jre lib security を編集しました。 java.security(editor.exeではなくワードパッドを使用)および新しいプロバイダー用に1行に配置します。その後、リストは次のようになりました

##プロバイダーとその優先順位のリスト(上記を参照):#security.provider.1 = org.bouncycastle.jce.provider.BouncyCastleProvider security.provider.2 = sun.security.provider.Sun security.provider.3 = sun .security.rsa.SunRsaSign security.provider.4 = com.sun.net.ssl.internal.ssl.Provider security.provider.5 = com.sun.crypto.provider.SunJCE security.provider.6 = sun.security。 jgss.SunProvider security.provider.7 = com.sun.security.sasl.Provider security.provider.8 = org.jcp.xml.dsig.internal.dom.XMLDSigRI security.provider.9 = sun.security.smartcardio.SunPCSC security.provider.10 = sun.security.mscapi.SunMSCAPI

(位置1の新しいものを参照してください)

その後、coldfusionサービスを完全に再起動します。その後、あなたはすることができます

java SSLPoke www.onlineumfragen.com 443(またはもちろんあなたのURL!)

そしてその気持ちを楽しんでください...そしてもちろん

何夜、何日。うまくいけば、これはそこにいる誰かに(部分的または完全に)役立つでしょう。ご不明な点がございましたら、info ...(上記のドメイン)までメールでお問い合わせください。


正しいキーストアに追加しましたか? ColdFusionは独自のJavaインスタンスを使用することに注意してください。その事実を思い出す前に、私はこれに一度数時間を費やしました。必要なものは/ ColdFusion8 / runtime / jre / lib / security /のような場所にあります