2017-06-12 1 views
0

J'ai récemment rencontré un problème où j'essayais de récupérer une ressource à partir d'un site. Le site a été associé à un certificat auto-signé. Quand je demande des ressources par le biais WebRequest, il jette l'erreur suivante:Meilleure façon de gérer les certificats auto-signés

Could not establish trust relationship for the SSL/TLS secure channel

Je ne cherche à trouver des solutions. Je ne veux pas désactiver la vérification des certificats tout à fait. Bref, je n'ai pas été capable de trouver une réponse convaincante. S'il vous plaît laissez-moi savoir la meilleure façon de traiter les certificats auto-signés.

+0

Cette erreur signifie que le client TCP sous-jacent n'a pas pu valider l'authenticité du serveur. Il existe différentes manières de le faire qui impliquent le provisionnement de certificat. Par exemple, en chargeant le certificat auto-signé dans votre magasin personnel pour utiliser la validation Peer Trust. – Biscuits

+0

Pouvez-vous s'il vous plaît expliquer un peu plus? – Sasu

+0

Dans un scénario typique, avec TLS activé, le serveur présente un certificat au client lors d'un processus de prise de contact avant d'établir une connexion sécurisée. Le certificat permet au client de valider cryptographiquement que le serveur est authentique (pour éviter l'usurpation) avant que le client n'accepte la connexion et n'envoie des informations potentiellement sensibles au serveur. Cette validation de serveur dans votre client peut être ignorée (non recommandée) à votre discrétion. – Biscuits

Répondre

0

Tout d'abord, il est important de savoir que cette exception vous empêche d'accéder à un faux serveur Web en vérifiant l'approbation de la certification du site.

certificats auto-signés peuvent faire confiance, mais vous devez installer il est autorité de certification racine dans le système magasin CA de confiance.

Il vous insistez sur le serveur de confiance qui est signé par certificat auto-signé sans l'installer est ca racine dans le magasin de confiance de CA, vous pouvez forcer le mécanisme de vérification de faire confiance à quoi que ce soit avec ceci:

ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; 

Ou meilleure approche pour définir cette approbation forcée uniquement sur l'instance HttpWebRequest:

var request = (HttpWebRequest)HttpWebRequest.Create(myUri); 
request.ServerCertificateValidationCallback = delegate { return true; }; 
+0

J'utilise ASP .NET 4.0. Je ne pense pas pouvoir le faire. request.ServerCertificateValidationCallback = delegate {return true; } – Sasu