Ne peut pas utiliser le protocole HTTPS avec l'objet ServerXMLHTTP
Je suis en soutenant un Classique ASP application qui se connecte à une passerelle de paiement via le protocole HTTPS. Jusqu'à récemment, il n'y a eu aucun problèmes. Il y A quelques jours les dernières mises à jour ont été installées sur le serveur (Windows Server 2003) et a provoqué le site de pause. Un extrait de code ci-dessous.
Dim oHttp
Dim strResult
Set oHttp = CreateObject("MSXML2.ServerXMLHTTP")
oHttp.setOption(2) = 13056
oHttp.open "POST", SOAP_ENDPOINT, false
oHttp.setRequestHeader "Content-Type", "application/soap+xml; charset=utf-8"
oHttp.setRequestHeader "SOAPAction", SOAP_NS + "/" & SOAP_FUNCTION
oHttp.send SOAP_REQUEST
Ci-dessous est un dump de l'erreur de l'objet :-
Nombre: -2147012852
Description: Un certificat est requis pour valider l'authentification du client
Message: Un certificat est requis pour valider l'authentification du client
Au début, je pensais que c'était parce que la Passerelle de Paiement du certificat SSL n'est pas en cours d'authentification, ou ils ont besoin d'un certificat client. J'ai testé l'URL dans un navigateur sur le serveur et qu'il s'affiche correctement sans erreur et a confirmé que la Passerelle de Paiement de serveur n'a pas besoin d'un certificat client.
Je suis à une perte. Toutes les recherches que j'ai fait m'a conduit nulle part. J'ai même essayé le suivant trouvé sur Stackoverflow :-
Obtenir XMLHTTP de travailler avec HTTPS
Le dernier a déclaré que le certificat du client est requise par XMLHTTP même si le serveur n'en a pas besoin, et a évoqué un article de la base sur la façon d'installer un, mais qui est obsolète et ne fonctionne pas.
CURLOPT_SSL_VERIFYPEER
. Je reviendrai si je trouve quoi que ce soit.La réponse à la première question que vous avez indiquée est ce que je cherchais et qui devrait fonctionner pour vous.
Je suis sysadmin qui est un coup de main avec cette. La réponse à la première question ne résout pas le problème, j'ai peur. En fait, cette option est déjà défini dans le code affiché dans la question ci-dessus. Juste pour ajouter à cela, ce qui se passe sur au moins 3 des serveurs distincts, dont aucun n'a vu de toutes les modifications de configuration récemment, en interdisant les mises à jour de Windows qui ont été installés hier/aujourd'hui, après que le problème a commencé à se produire. Les dernières mises à jour avant qui étaient à la fin de novembre.
À l'aide de la plaine HTTP travaillé, ce qui prouve que le code est le son. Quelque chose sur le serveur est en cours d'arrêt XMLHTTP d'accéder à une URL en utilisant le protocole HTTPS.
OriginalL'auteur Imraan | 2012-02-09
Vous devez vous connecter pour publier un commentaire.
Essayez d'ajouter
oHttp.setOption 2, 13056
Nous avons un héritage ASP application à l'aide de MSXML qui a été transféré à un autre fournisseur d'accès internet, et a commencé à se
Error -2147012851: The certificate authority is invalid or incorrect
lorsque vous essayez de vous connecter via HTTPS. (La connexion sur le HTTP fonctionne très bien.) L'ajout de cette.setOption 2, 13056
à notre code a "résolu" (éviter) le problème, je vous remercie donc Zee Té!Heureux que cela a aidé.
OriginalL'auteur Control Freak
Viens de trouver la solution à ce qui a réussi les tests sur:
C'est un client de problème. MSXML2.ServerXMLHTTP exige en effet l'utilisation d'un certificat du client lors de l'appel d'un point de terminaison sécurisé avec SSL (même si le point de terminaison n'en a pas besoin), que l'OP a noté.
Sur le serveur, vous devez:
En détail:
1. Créer un certificat client
Utiliser la commande PowerShell suivante pour créer un nouveau certificat auto-signé:
Noter que le certificat créé par cette commande ne sera valable pendant 1 an.
2. Attribuer des autorisations pour le certificat
À l'aide de la console MMC, vue sur le magasin de certificats de l' compte d'ordinateur:
Comment faire pour Afficher les Certificats avec le composant logiciel Enfichable MMC
Le certificat créé ci-dessus peuvent être trouvés dans Certificats (Ordinateur Local)\Personnel\Certificats (le "Délivré Par" et "délivrance" les colonnes à afficher "ServerXMLHTTP").
Droite, cliquez sur le ServerXMLHTTP certificat, sélectionnez "Toutes les Tâches" -> "Gérer les Clés Privées" et la boîte de dialogue autorisations s'affiche.
Ajouter l'utilisateur que le site web ASP pool d'application est en cours d'exécution. Par défaut, il sera exécuté en tant que "ApplicationPoolIdentity", mais votre installation peut être à l'aide d'un compte d'utilisateur spécifique. Si l'application de la piscine est à l'aide de ApplicationPoolIdentity, le nom d'utilisateur à ajouter, c'est "IIS AppPool\APP NOM du POOL", par exemple IIS AppPool\DefaultAppPool
L'utilisateur sera ajouté avec "Contrôle total", qui peut être désélectionné. Seulement l'autorisation "Lecture" semble être nécessaire. Cliquez sur "OK" pour confirmer les autorisations.
3. Définir le certificat sur l'objet ServerXMLHTTP
Dans votre code ASP, définissez l'objet ServerXMLHTTP pour utiliser le certificat créé ci-dessus. Par exemple un appel à PayPal pour un jeton d'accès:
J'espère que c'est toujours de l'aide.
OriginalL'auteur bambam
C'est probablement un ServerFault.com question vraiment, après tout, si le code fonctionne bien, alors que ce n'est pas un programmatique problème.
Cependant, je voudrais essayer une couple de choses. Essayez d'abord à l'aide d'un ProgID "MSXML2.ServerXMLHTTP.3.0", dans certaines circonstances MSXML3 va se comporter différemment en fonction du ProgID a été utilisé pour instancier le composant. Également mettre à jour à partir d'autres sources, comme votre anti-virus fournisseur (Sophos eu ce problème) peuvent se casser MSXML installe.
Un autre ProgID pour essayer de "MSXML2.ServerXMLHTTP.6.0", après avoir installé MSXML6. Si le problème est du à une mise à jour de la MSXML3 noyau puis peut-être le MSXML6 de base n'a pas le même problème.
J'ai essayé de désactiver l'anti-virus, il n'a pas aidé.
OriginalL'auteur AnthonyWJones
Pouvez-vous essayer avec oHttp.setOption(3) = "nom de magasin de certificats/friendlyname de certificat"
comme ci-dessous. J'espère que cela fonctionne.
OriginalL'auteur Gaurav
Je sais que c'est une vieille question. Ce problème pourrait être la cause du non pris en charge les suites de chiffrement.
Essayez d'ajouter
- TLS_RSA_WITH_AES_128_CBC_SHA AES128-SHA
- TLS_RSA_WITH_AES_256_CBC_SHA AES256-SHA
Cela signifie que vous devez suivre cette kb: http://support.microsoft.com/kb/948963
Cette mise à jour est également intéressante si vous utilisez encore windows 2003. Ce qui permettra de connecter au site à l'aide de SHA2 - http://support.microsoft.com/kb/968730
Veuillez noter que le support de Windows Server 2003 prend fin le 14 juillet 2015
OriginalL'auteur Sunil