web-dev-qa-db-fra.com

Échec de la connexion à ColdFusion https

J'ai une API qui fonctionne correctement sur l'un de mes deux serveurs Web, mais pas sur l'autre ou sur mon ordinateur local. J'obtiens plutôt d'un échec de connexion lorsque j'envoie des demandes https dans le cadre du processus de connexion.

Les requêtes sont très simples et fonctionnent sans problème sur l’un des trois serveurs sur lesquels il est exécuté. Le premier est le suivant:

<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>

J'ai jeté un coup d'oeil et cela semble être un problème commun mais ce correctif fourni aucune joie.

Je suppose qu'il y a un paramètre de sécurité que je peux peut-être oublier? Je peux accéder à la page et me connecter au navigateur sur ma machine locale si cela peut aider.

Est-ce que quelqu'un a un conseil?

C'est ce qui est retourné dans un PCDUP:

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

PCDUMP 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 
19
CPB07

Si vous utilisez cfhttp pour vous connecter via SSL (https), le serveur ColdFusion a définitivement besoin du certificat installé pour se connecter correctement. Voici une réponse précédente que j'ai donnée sur un problème similaire:

Voici les étapes à suivre pour installer le certificat dans le magasin de clés Java pour ColdFusion. Tout d’abord, assurez-vous de mettre à jour le fichier cacerts correct utilisé par ColdFusion. Si plusieurs JRE sont installés sur ce serveur. Vous pouvez vérifier que JRE ColdFusion est en cours d'utilisation auprès de l'administrateur sous "Informations système". Recherchez la ligne d’accueil Java.

Le fichier de clés certifiées par défaut est le fichier cacerts du JRE. Ce fichier se trouve généralement aux endroits suivants:

  • Configuration du serveur:

    racine_cf/runtime/jre/lib/security/cacerts

  • Configuration multiserveur/J2EE sur JRun 4:

    racine_jrun/jre/lib/security/cacerts

  • Installation du JDK Sun:

    racine_jdk/jre/lib/security/cacerts

  • Consultez la documentation d'autres serveurs d'applications J2EE et JVM.

Pour installer le certificat, vous devez d'abord en obtenir une copie. Cela peut être fait en utilisant Internet Explorer. Notez que les différentes versions d'Internet Explorer se comporteront légèrement différemment mais devraient être très similaires à ces étapes. Par exemple, les versions antérieures de IE pourraient enregistrer le certificat sous un onglet différent de celui que je mentionne.

  1. Accédez à l'URL SSL dans Internet Explorer - https://xyz/infoLookup.php?wsdl.
  2. Affichez le certificat en cliquant sur l'icône lock puis en cliquant sur afficher le certificat.
  3. Cliquez ensuite sur le bouton Installer le certificat ... (remarque: si vous ne voyez pas ce bouton, vous devez fermer IE et l'exécuter en tant qu'administrateur en premier)
  4. Cliquez sur les options Internet d'IE, puis sur l'onglet Contenu.
  5. Cliquez sur le bouton Certificats
  6. Recherchez le certificat du serveur sous l'onglet Autorités de certification intermédiaires, sélectionnez le certificat et cliquez sur le bouton Exporter ...
  7. Exporter au format DER

Copiez le fichier de certificat exporté sur votre serveur ColdFusion (vous pouvez supprimer le certificat de IE si vous le souhaitez).

  1. Exécutez l'invite cmd en tant qu'administrateur sur le serveur ColdFusion.
  2. Faites une sauvegarde du fichier cacerts original au cas où vous rencontriez des problèmes

L'outil de clé fait partie du SDK Java et se trouve aux endroits suivants:

  • Configuration du serveur:

    racine_cf/runtime/bin/keytool

  • Configuration multiserveur/J2EE sur JRun 4:

    racine_jrun/jre/bin/keytool

  • Installation du JDK Sun:

    racine_jdk/bin/keytool

  • Consultez la documentation d'autres serveurs d'applications J2EE et JVM.

Pour installer le cert:

  1. Changer le répertoire à l'emplacement de votre magasin de clés de confiance (où se trouve le fichier cacerts)
  2. Tapez cette commande (utilisez jvm actuel et le keytool de jvm actuel) "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
  3. Tapez oui à l'invite pour "faire confiance à ce certificat?"

Note: * your_cert_alias_name * que j'ai utilisé ci-dessus peut être ce que vous voulez
Remarque: * C:\partout où vous sauvegardez_le_fichier\cert_file.cer * remplacez ces valeurs par tout ce que vous utilisez pour le dossier du serveur et le nom du fichier de certificat.

Pour vérifier le cert:

  1. Tapez cette commande (utilisez jvm actuel et le keytool de jvm actuel) "c:\program files\Java\jre7\bin\keytool" -list -v -keystore cacerts -alias your_cert_alias_name -storepass changeit

Remarque: * your_cert_alias_name * utilise ici le même nom que celui que vous avez utilisé ci-dessus pour installer le certificat.

Redémarrez le service ColdFusion Il ne lira pas le fichier cacerts mis à jour avant cette opération.

Vous pouvez supprimer le fichier de certificat importé du serveur si vous le souhaitez.

23
Miguel-F

J'avais un serveur avec Coldfusion 10 (avec Java Version: 1.7.0_15) et Windows Server 2008 . J'avais ajouté des certificats pour mon URL d'API. Mais j'ai eu une erreur 

Échec de la connexion: code d'état non disponible.

Ensuite, j'ai ajouté la configuration suivante à la configuration Coldfusion JVM dans Coldfusion Administrator et elle a commencé à fonctionner.

-Dhttps.protocols=TLSv1.1,TLSv1.2
4
RRK

Un certain nombre de scénarios peuvent présenter ce message.

Il existe également un certain nombre de messages de blog et de discussions détaillés qui pourraient vous aider à étudier votre problème.

1) Problème de résolution DNS - assurez-vous que vous pouvez atteindre l’URL du noeud final, sinon cette erreur sera générée.

2) Assurez-vous de définir un agent d'utilisateur dans la requête cfhttp, les serveurs peuvent facilement détecter des agents d'utilisateur non standard et les filtrer.

enter code here

3) Désactivez la compression dans la demande. Dans les cas où vous frappez certains serveurs, cela fonctionne. Cela peut arriver avec certaines configurations d'IIS. Il existe de nombreux sites avec cet exemple sur la recherche et cela a fonctionné pour moi.

<cfhttp url="https://yourUrlHere.com" method="get">
    <cfhttpparam type="Header" name="Accept-Encoding" value="*"> 
    <cfhttpparam type="Header" name="TE" value="deflate;q=0">
</cfhttp>

Un autre en-tête que vous pouvez essayer d’envoyer en fonction du serveur http de l’autre extrémité est:

<cfhttpparam type="header" name="Accept-Encoding" Value="no-compression"> 

La source

4) Si le problème est causé par un certificat SSL, vous pouvez ajouter manuellement les certificats à votre serveur. Je préfère ne pas regarder dans cette direction si possible mais vous pouvez le chercher. 

5) Un autre scénario de connexion à une URL https est la nécessité de désactiver le fournisseur de certificat par défaut (il en existe beaucoup en Java et le fournisseur par défaut peut ne pas correspondre à ce qui est nécessaire). Cela n’affecte pas la sécurité, utilise uniquement une bibliothèque différente et équivalente.

Source pour l'exemple 5

6) Dernier point, mais non le moindre, vous êtes peut-être en train de devenir une proie pour réécrire les règles. Je n'ai pas vécu cela, mais ça a l'air intéressant.

Problèmes "Echecs de connexion" CFHTTP lors de l'utilisation de mod_rewrite

2
Jas Panesar

Je n'ai pas assez de points pour commenter la réponse de @ Miguel-F, je dois donc poster cette réponse avec mon expérience et des détails supplémentaires ...

Après avoir suivi les instructions pour ajouter le certificat, CFHTTP n’avait toujours pas le site https pour moi. J'ai trouvé ce post qui m'a finalement aidé à résoudre le problème. Il décrit l'ajout d'une sortie de débogage SSL dans le fichier coldfusion-out.log, qui spécifie l'adresse URL de téléchargement exacte du certificat que vous manquez. Le certificat qui me manquait était pour "Let's Encrypt", qui apparaît dans le fichier journal sous la forme:

accessLocation: URIName: http://cert.int-x3.letsencrypt.org/

J'ai frappé cette URL et utilisé l'outil de clé pour ajouter le fichier téléchargé au magasin de clés. Voila! La santé mentale restaurée.

J'aime et déteste ColdFusion

2
Clark Baker

Pour ceux qui ont pu atterrir ici s'ils éprouvaient des difficultés à utiliser cfhttp et le service de vérification sécurisée recaptcha de Google (comme je l'ai fait), il est essentiel de publier sur cette page l'ajout du certificat de sécurité de Google au fichier cacerts de JRE.

Ce qui est également essentiel (et difficile à trouver) est d’ajouter

<cfhttpparam type="CGI" encoded="false" name="Content_Type" value="application/json; charset=utf-8">

à votre demande cfhttp. Cela résoudra l'erreur "Impossible de déterminer le type de contenu. MIME non valide". qui ressemble aussi à une erreur de connexion. (ajoutant à la réponse de Jas ci-dessus)

Merci à 12Robots pour le forum Adobe ColdFusion Communities!

1
David Belanger

Tout ce qui précède ne fonctionnera pas si le serveur sur lequel vous appuyez nécessite TLS 1.2. Ceci nécessite de mettre à jour votre JVM vers 1.8, sur lequel vous trouverez plus d’informations ici: 

http://blogs.coldfusion.com/post.cfm/how-to-change-upgrade-jdk-version-of-coldfusion-server

1
user7723273