2つのWebサーバーのいずれかで正常に動作するが、他のサーバーやローカルマシンでは動作しないAPIがあります。代わりに、ログインプロセスの一部としてhttpsリクエストを送信すると、接続エラーが発生します。
リクエストは非常にシンプルであり、リクエストが実行されている3つのサーバーの1つで問題なく機能します。最初のものは次のとおりです。
<cfhttp url="https://accounts.ea.com/connect/auth?response_type=code&client_id=EASFC-web&state=59c5a8f1c4e7a991c1da0b54504c38e45f4d8d78&redirect_uri=http%3A%2F%2Fwww.easports.com%2Ffifa%2Ffootball-club%2Flogin_check&locale=uk&scope=basic.identity+basic.persona+signin+offline " method="GET" result="Stage2" redirect="false">
<cfhttpparam type="header" name="Accept" value="text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" />
<cfhttpparam type="header" name="Accept-Encoding" value="gzip, deflate" />
<cfhttpparam type="header" name="Accept-Language" value="en-US, en;q=0.5" />
<cfhttpparam type="header" name="Connection" value="keep-alive" />
<cfhttpparam type="header" name="Host" value="accounts.ea.com" />
<cfhttpparam type="header" name="User-Agent" value="Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36" />
</cfhttp>
私が見たところ、これは一般的な問題のようですが、 この修正 には喜びがありませんでした。
私はおそらく見落としているいくつかのセキュリティ設定があると思いますか?それが役立つ場合は、ローカルマシンのブラウザ内でページにアクセスしてログインできます。
誰かアドバイスはありますか?
これは、CFDUMPで返されるものです。
Debugging Information
ColdFusion Server Developer 9,0,0,251028
Template /CraigTest/FUT/FIFACPB/logInSearchAccount17.cfm
Time Stamp 09-Dec-13 11:40 AM
Locale English (UK)
User Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0
Remote IP 127.0.0.1
Host Name 127.0.0.1
________________________________________
Execution Time
Total Time Avg Time Count Template
608 ms 608 ms 1 C:\Services\web\wwwroot\CraigTest\FUT\FIFACPB\logInSearchAccount17.cfm
5 ms 5 ms 1 CFC[ C:\Services\web\wwwroot\CraigTest\FUT\FIFACPB\Application.cfc | onRequestStart(/CraigTest/FUT/FIFACPB/logInSearchAccount17.cfm) ] from C:\Services\web\wwwroot\CraigTest\FUT\FIFACPB\Application.cfc
1 ms 1 ms 1 CFC[ C:\Services\web\wwwroot\CraigTest\FUT\FIFACPB\cfcs\Player.cfc | init([complex value]) ] from C:\Services\web\wwwroot\CraigTest\FUT\FIFACPB\cfcs\Player.cfc
0 ms 0 ms 1 CFC[ C:\Services\web\wwwroot\CraigTest\FUT\FIFACPB\cfcs\Bid.cfc | init([complex value]) ] from C:\Services\web\wwwroot\CraigTest\FUT\FIFACPB\cfcs\Bid.cfc
0 ms 0 ms 1 CFC[ C:\Services\web\wwwroot\CraigTest\FUT\FIFACPB\cfcs\Club.cfc | init([complex value]) ] from C:\Services\web\wwwroot\CraigTest\FUT\FIFACPB\cfcs\Club.cfc
0 ms 0 ms 1 CFC[ C:\Services\web\wwwroot\CraigTest\FUT\FIFACPB\cfcs\Connect.cfc | init([complex value]) ] from C:\Services\web\wwwroot\CraigTest\FUT\FIFACPB\cfcs\Connect.cfc
0 ms 0 ms 1 CFC[ C:\Services\web\wwwroot\CraigTest\FUT\FIFACPB\cfcs\Search.cfc | init([complex value]) ] from C:\Services\web\wwwroot\CraigTest\FUT\FIFACPB\cfcs\Search.cfc
0 ms 0 ms 1 CFC[ C:\Services\web\wwwroot\CraigTest\FUT\FIFACPB\cfcs\doLogin.cfc | init([complex value]) ] from C:\Services\web\wwwroot\CraigTest\FUT\FIFACPB\cfcs\doLogin.cfc
4 ms STARTUP, PARSING, COMPILING, LOADING, & SHUTDOWN
617 ms TOTAL EXECUTION TIME
red = over 250 ms average execution time
________________________________________
Scope Variables
CGI Variables:
AUTH_PASSWORD=
AUTH_TYPE=
AUTH_USER=
CERT_COOKIE=
CERT_FLAGS=
CERT_ISSUER=
CERT_KEYSIZE=
CERT_SECRETKEYSIZE=
CERT_SERIALNUMBER=
CERT_SERVER_ISSUER=
CERT_SERVER_SUBJECT=
CERT_SUBJECT=
CF_TEMPLATE_PATH=C:\Services\web\wwwroot\CraigTest\FUT\FIFACPB\logInSearchAccount17.cfm
CONTENT_LENGTH=
CONTENT_TYPE=
CONTEXT_PATH=
GATEWAY_INTERFACE=
HTTPS=
HTTPS_KEYSIZE=
HTTPS_SECRETKEYSIZE=
HTTPS_SERVER_ISSUER=
HTTPS_SERVER_SUBJECT=
HTTP_ACCEPT=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP_ACCEPT_ENCODING=gzip, deflate
HTTP_ACCEPT_LANGUAGE=en-US,en;q=0.5
HTTP_CONNECTION=keep-alive
HTTP_COOKIE=cf_debug_general=block; cf_debug_template_stack=block; CFID=15108; CFTOKEN=12249080; CFAUTHORIZATION_cfadmin=YWRtaW4NRTg5NzE2OTdCODczMUI0MDVBM0UxRTZCMjI2N0I1MDA5M0QzQkE4MQ1jZmFkbWlu; CFADMIN_LASTPAGE_ADMIN=%2FCFIDE%2Fadministrator%2Fdebugging%2Findex%2Ecfm
HTTP_Host=127.0.0.1:8500
HTTP_REFERER=
HTTP_USER_AGENT=Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0
PATH_INFO=
PATH_TRANSLATED=C:\Services\web\wwwroot\CraigTest\FUT\FIFACPB\logInSearchAccount17.cfm
QUERY_STRING=reinit=1
REMOTE_ADDR=127.0.0.1
REMOTE_Host=127.0.0.1
REMOTE_USER=
REQUEST_METHOD=GET
SCRIPT_NAME=/CraigTest/FUT/FIFACPB/logInSearchAccount17.cfm
SERVER_NAME=127.0.0.1
SERVER_PORT=8500
SERVER_PORT_SECURE=0
SERVER_PROTOCOL=HTTP/1.1
SERVER_SOFTWARE=
WEB_SERVER_API=
Cookie Variables:
CFADMIN_LASTPAGE_ADMIN=/CFIDE/administrator/debugging/index.cfm
CFAUTHORIZATION_cfadmin=YWRtaW4NRTg5NzE2OTdCODczMUI0MDVBM0UxRTZCMjI2N0I1MDA5M0QzQkE4MQ1jZmFkbWlu
CFID=15108
CFTOKEN=12249080
cf_debug_general=block
cf_debug_template_stack=block
Session Variables:
biddingaccountloggedin=0
biddingaccountloginattempts=0
cfid=15108
cftoken=12249080
mainaccountloggedin=0
mainaccountloginattempts=0
pricingaccountloggedin=0
pricingaccountloginattempts=0
searchaccount10loggedin=0
searchaccount10loginattempts=0
searchaccount11loggedin=0
searchaccount11loginattempts=0
searchaccount12loggedin=0
searchaccount12loginattempts=0
searchaccount13loggedin=0
searchaccount13loginattempts=0
searchaccount14loggedin=0
searchaccount14loginattempts=0
searchaccount15loggedin=0
searchaccount15loginattempts=0
searchaccount16loggedin=0
searchaccount16loginattempts=0
searchaccount17gamertag=ZappyShrimp8
searchaccount17loggedin=0
searchaccount17loginattempts=0
searchaccount18loggedin=0
searchaccount18loginattempts=0
searchaccount19loggedin=0
searchaccount19loginattempts=0
searchaccount1loggedin=0
searchaccount1loginattempts=0
searchaccount20loggedin=0
searchaccount20loginattempts=0
searchaccount21loggedin=0
searchaccount21loginattempts=0
searchaccount22loggedin=0
searchaccount22loginattempts=0
searchaccount23loggedin=0
searchaccount23loginattempts=0
searchaccount24loggedin=0
searchaccount24loginattempts=0
searchaccount25loggedin=0
searchaccount25loginattempts=0
searchaccount26loggedin=0
searchaccount26loginattempts=0
searchaccount27loggedin=0
searchaccount27loginattempts=0
searchaccount28loggedin=0
searchaccount28loginattempts=0
searchaccount29loggedin=0
searchaccount29loginattempts=0
searchaccount2loggedin=0
searchaccount2loginattempts=0
searchaccount30loggedin=0
searchaccount30loginattempts=0
searchaccount3loggedin=0
searchaccount3loginattempts=0
searchaccount4loggedin=0
searchaccount4loginattempts=0
searchaccount5loggedin=0
searchaccount5loginattempts=0
searchaccount6loggedin=0
searchaccount6loginattempts=0
searchaccount8loggedin=0
searchaccount8loginattempts=0
sessionid=FIFAAUTOBUYER_15108_12249080
urltoken=CFID=15108&CFTOKEN=12249080
URL Parameters:
reinit=1
Debug Rendering Time: 21 ms
CFDUMP STAGE2:
struct
Charset [empty string]
ErrorDetail I/O Exception: peer not authenticated
Filecontent Connection Failure
Header [empty string]
Mimetype Unable to determine MIME type of file.
Responseheader
struct [empty]
Statuscode Connection Failure. Status code unavailable.
Text YES
SSL(https)経由で接続するためにcfhttp
を使用している場合、ColdFusionサーバーが正常に接続するには、証明書をインストールする必要があります。ここに私が同様の問題について与えた以前の答えがあります:
証明書をJavaキーストアにインストールするために実行する必要がある手順は次のとおりです。最初に、ColdFusionが使用している正しいcacertsファイルを更新していることを確認してください。そのサーバーに複数のJREがインストールされています。ColdFusionが使用していることは、管理者の[システム情報]で確認できます。Java Home行を探します。
デフォルトのトラストストアは、JREのcacertsファイルです。このファイルは通常、次の場所にあります。
サーバー構成:
cf_root/runtime/jre/lib/security/cacerts
JRun 4構成のマルチサーバー/ J2EE:
jrun_root/jre/lib/security/cacerts
Sun JDKのインストール:
jdk_root/jre/lib/security/cacerts
他のJ2EEアプリケーションサーバーとJVMのドキュメントを参照してください
証明書をインストールするには、まず証明書のコピーを取得する必要があります。これは、Internet Explorerを使用して実行できます。 Internet Explorerのバージョンが異なると動作が少し異なりますが、これらの手順とよく似ていることに注意してください。たとえば、IEの以前のバージョンでは、私が言及したものとは別のタブに証明書を保存する可能性があります。
https://xyz/infoLookup.php?wsdl
。エクスポートした証明書ファイルをColdFusionサーバーにコピーします(必要に応じてIEから証明書を削除できます)
cmd
プロンプトを実行します。KeytoolはJava SDKの一部であり、次の場所にあります。
サーバー構成:
cf_root/runtime/bin/keytool
JRun 4構成のマルチサーバー/ J2EE:
jrun_root/jre/bin/keytool
Sun JDKのインストール:
jdk_root/bin/keytool
他のJ2EEアプリケーションサーバーとJVMのドキュメントを参照してください
証明書をインストールするには:
"c:\program files\Java\jre7\bin\keytool" -import -v -alias your_cert_alias_name -file C:\wherever_you_saved_the_file\cert_file.cer -keystore cacerts -storepass changeit
注:* your_cert_alias_name *上記で使用したものは何でもかまいません
注:* C:\ wherever_you_saved_the_file\cert_file.cer *これらの値を、サーバーフォルダーと証明書ファイル名に使用する値に変更します
証明書を確認するには:
"c:\program files\Java\jre7\bin\keytool" -list -v -keystore cacerts -alias your_cert_alias_name -storepass changeit
注:* your_cert_alias_name *には、上記で証明書をインストールしたときと同じ名前を使用します
ColdFusionサービスを再起動しますこれを行うまで、更新されたcacertsファイルは読み込まれません。
必要に応じて、インポートした証明書ファイルをサーバーから削除できます。
私はColdfusion 1(Javaバージョン:1.7.0_15を使用)とWindows Server 2008を備えたサーバーを持っていました。 APIのURLですが、エラーが発生しました
接続エラー:ステータスコードを利用できません。
次に、Coldfusion AdministratorのColdfusion JVM構成に次の構成を追加すると、動作し始めました。
-Dhttps.protocols=TLSv1.1,TLSv1.2
このメッセージが表示される可能性のあるシナリオはいくつかあります。
問題を調査するのに役立つ詳細なブログ投稿とスレッドも多数あります。
1)DNS解決の問題-エンドポイントのURLにアクセスできることを確認してください。そうしないと、このエラーが発生します。
2)cfhttpリクエストでユーザーエージェントを設定してください。サーバーは非標準のユーザーエージェントを簡単に検出し、除外できます。
enter code here
3)リクエストの圧縮を無効にします。一部のサーバーにアクセスしている場合、これは機能します。これにより、IISのいくつかの構成が考えられます。この例が検索されたサイトは数多くあり、私にとってはうまくいきました。
<cfhttp url="https://yourUrlHere.com" method="get">
<cfhttpparam type="Header" name="Accept-Encoding" value="*">
<cfhttpparam type="Header" name="TE" value="deflate;q=0">
</cfhttp>
相手側のhttpサーバーに応じて送信できる別のヘッダーは次のとおりです。
<cfhttpparam type="header" name="Accept-Encoding" Value="no-compression">
4)問題の原因がSSL証明書である場合は、証明書をサーバーに手動で追加できます。できればこの方向を見ない方がいいですが、検索してみてください。
5)https URLに接続するもう1つのシナリオは、デフォルトの証明書プロバイダーを無効にする必要がある場合です(Javaには多くあり、デフォルトのプロバイダーは必要なものに適合しない場合があります)。これはセキュリティに影響を与えず、別の同等のライブラリのみを使用します。
6)最後に大事なことを言い忘れましたが、あなたはルールを書き換えるための餌食になるかもしれません。私はこれを経験していませんが、面白そうです。
@ Miguel-Fの回答にコメントするのに十分なポイントがないため、この回答を自分の経験と詳細とともに投稿する必要があります...
証明書を追加するための指示に従っても、CFHTTPがまだhttpsサイトを取得していませんでした。私は この投稿 を見つけました。これは最終的に問題を解決するのに役立ちました。 SSLデバッグ出力をcoldfusion-out.logファイルに追加する方法について説明しています。このファイルには、不足している証明書の正確なダウンロードURLが指定されています。私が欠落していた証明書は、ログファイルに次のように表示される「Let's Encrypt」用のものでした。
accessLocation: URIName: http://cert.int-x3.letsencrypt.org/
そのURLにアクセスし、keytoolを使用して、ダウンロードしたファイルをキーストアに追加しました。出来上がり!健全性が回復しました。
ColdFusionは好きでも嫌いでもあります
CfhttpおよびGoogleのrecaptchaセキュア検証サービス(私が行ったように)の使用に問題があった場合にここに上陸した可能性のある人にとっては、JREのcacertsファイルへのGoogleのセキュリティ証明書の追加に関するこのページの投稿が不可欠です。
追加することも不可欠です(見つけるのは簡単ではありません)
<cfhttpparam type="CGI" encoded="false" name="Content_Type" value="application/json; charset=utf-8">
あなたにcfhttpリクエスト。これにより、「コンテンツタイプを判別できません。無効なMIME」というエラーが解決されます。これも接続エラーのように見えます。 (上記のJasの回答に追加)
AdobeのColdFusionコミュニティフォーラムで12Robotsに感謝します。
ヒットしているサーバーがTLS 1.2
を必要とする場合、上記のすべてが機能しません。これには、JVMを1.8
に更新する必要があります。詳細については、以下を参照してください。
http://blogs.coldfusion.com/post.cfm/how-to-change-upgrade-jdk-version-of-coldfusion-server
デビッドに感謝します。以下に3つのヘッダータグを追加しました。
<cfhttpparam type="header" name="Content-Type" value="application/json" />
<cfhttpparam type="header" name="Accept-Encoding" Value="*">
<cfhttpparam type="Header" name="TE" value="deflate;q=0">
ありがとう-Hitesh