Le navigateur ne demande pas de certificat client
De fond:
Je suis la mise à jour d'une application interne à une authentification en deux étapes du processus. Je veux ajouter une authentification par certificat client (au moyen d'une carte à puce) sur le dessus de la traditionnelle " nom d'utilisateur/mot de passe formulaire. L'application est écrite en C#, hébergé sur IIS7, et le ciblage de Chrome et IE8.
Problème:
Je vais avoir des problèmes avec l'obtention de l'application invite l'utilisateur à un certificat client. J'ai été le débogage de l'application avec l'aide de Violoneux. Quand j'ai un client de test certificat enregistré dans un violon du répertoire de l'utilisateur (C:\Documents and Settings\UTILISATEUR\Mes Documents\Fiddler2), l'application fonctionne comme prévu. Je suis invité pour un numéro de BROCHE la protection de la carte à puce, et, lorsqu'ils sont entrés correctement, me prend pour le formulaire de connexion. Quand je ferme les Violoneux, l'application renvoie une erreur 403 Forbidden place (depuis Fiddler est plus en cours d'exécution et pointant vers son certificat). Ce que je n'ai pas été en mesure de comprendre est pourquoi l'application ne va pas demander un certificat normalement.
Installation Serveur Actuel:
- Certificat auto-Signé a été créé
- 443 Liaison de pointe à un Certificat Auto-Signé
- L'Authentification anonyme est Activée
- Le Certificat Auto-Signé a été ajouté à la Racine de Confiance de l'AC et de l'autorité de certification Intermédiaire (j'ai lu qu'une autre personne avait dans les deux plutôt que de simplement l'autorité de certification Racine de Confiance et qui a résolu leur problème, bien que ni la mise en place a bien fonctionné pour nous).
- J'ai vidé le reste des certificats de l'autorité de certification Racine de Confiance que je n'avais pas besoin (j'ai lu ailleurs que le fait d'avoir trop de certificats serait la cause de SSL pour étouffer).
Je suis à court d'idées pour essayer d'autres que de partir de zéro sur un autre serveur. Personne ne sait ce que le problème peut être? Cela semble comme il devrait être relativement directe et que je suis absent quelque chose de mineur. Toutes les idées sont les bienvenues.
Mise à jour:
Après avoir passé plus de temps avec cette question aujourd'hui, je crois qu'il a à faire avec IIS7 pas être configuré correctement (je n'ai pas le mettre en place à l'origine). Je crois que c'est parce j'ai activé le suivi des demandes ayant Échoué, regardé la suite .les fichiers xml générés, et vu qu'une erreur 500 a été projeté.
Chrome est en train de lancer un "Accès à la page web a été refusé" message plutôt que d'un "403 - Interdit: Accès refusé". Je ne sais pas si cela aide. Je sais que quand je ne fais pas les certificats requis, le site fonctionne comme prévu. Exiger un certificat est où il échoue.
L'Application de la Piscine .Net 4.0 | Classique | Service Réseau.
source d'informationauteur LNendza
Vous devez vous connecter pour publier un commentaire.
Votre problème est que le navigateur ne prend pas en soit, la demande de fournir un certificat client ou s'il est lié à la sécurité de l'option pour l'empêcher de se produire. IE propose uniquement le certificat si le site web est dans bonne zone (intranet ou de sites de confiance). Veuillez vérifier avant tout.
Si cela ne fonctionne pas alors voir ce réponse pour la prochaine étape. La commande netsh documentation dit:
Permettre que et même le plus stupide navigateur d'avis qu'il est censé offrir des certificats pour l'authentification. Pour diagnostiquer votre problème de plus vous pouvez utiliser WireShark de voir la négociation dans l'action.
Essayer
openssl s_client -connect yourip:443 -prexit
Et voir si l'autorité de certification (votre auto-signé cert) est à envoyer au client le client Acceptables certificat de noms de CA.
vous devez installer openssl en premier si vous ne l'avez pas
Dans tous les navigateurs que j'ai vu, le navigateur ne sera pas vous invite à sélectionner un certificat s'il ne dispose pas de tous les certificats signés par une autorité de certification approuve le serveur. Donc, assurez-vous que votre serveur est configuré avec le bon numéro CAs. Comme Boklucius suggéré, vous pouvez utiliser openssl pour examiner la liste d'autorités de certification approuvées de votre serveur d'envoi pour les clients et voir si l'autorité de certification que vous avez signé vos certificats de client est parmi eux.
Pour ajouter un peu douloureux leçon pour le mélange: assurez-vous que vous quittez Skype (ou toute autre application) qui mange le port 443.
Donc l'idée ici est de savoir si vous utilisez un environnement de dev sur la même machine (à la fois client et IIS), et votre équipe utilise Skype ou d'autres applications de communiquer.
Regarder les heures passent comme vous essayez de déboguer ce problème, apparemment, de faire tout ce qui est "droit",
netsh http sslcerts
et ce, même le redémarrage, mais en vain. Eh bien, s'avère Skype manger 443 afin de l'éteindre et de le "pouf" il y va de votre certificat d'invite.Alors n'hésitez pas à jeter des choses sur le mur, crier des obscénités ou tout simplement "la Rage, rage contre la mort de la lumière".
Aussi, assurez-vous que Fiddler n'est pas d'obtenir de la manière. Si vous en avez le déchiffrement SSL, il va corrompre le message de revenir à IE, et il n'a pas le certificat installé, donc il ne peut pas offrir. Éteignez le violoneux, et le tour est joué, le certificat s'affiche.
Je vais le jeter dans un "essayez de redémarrer le navigateur" suggestion, en particulier si vous avez installé le certificat alors que le navigateur est en cours d'exécution.