web-dev-qa-db-fra.com

Erreur HTTP 403.16 - Problème d'approbation du certificat client

J'essaie d'implémenter l'authentification par certificat client sur IIS 8. J'ai déployé ma configuration sur un ordinateur de développement et je l'ai vérifiée comme prévu. Cependant, après la configuration sur le serveur, chaque fois que je navigue sur le site et que je suis invité à fournir le certificat client, je le sélectionne et reçois immédiatement l'erreur 403.16. Le journal des demandes ayant échoué indique le code d'erreur 2148204809 et le message "Chaîne de certificats traitée, mais terminée par un certificat racine non approuvé par le fournisseur de confiance".

J'ai un certificat de client valide et également un certificat de CA valide. Le certificat de certification est installé dans les autorités de racine de confiance sur le compte d'ordinateur sur le serveur et sur la machine cliente, et le certificat client est installé dans la zone Personnel du compte d'utilisateur actuel sur la machine cliente.

Le certificat client est signé directement par l'autorité de certification racine et, comme je l'ai dit, les deux sont valides. Il n'y a pas d'autres certificats dans la chaîne et il n'y a pas de certificats intermédiaires dans la zone Autorités racines de confiance.

La configuration IIS a sslFlags = SslNegotiateCert et iisClientCertificateMappingAuthentication est activée.

Le serveur n'est pas configuré pour envoyer une CTL et nous avons SendTrustedIssuerList = 0.

Je ne vois pas pourquoi le certificat client ne devrait pas être approuvé.

26
Eric

Windows 2012 a introduit des validations plus strictes du magasin de certificats. Selon KB 2795828: le service frontal Lync Server 2013 ne peut pas démarrer dans Windows Server 2012 , le magasin d'autorités de certification racines de confiance (c'est-à-dire racine) ne peut contenir que des certificats autosignés. Si ce magasin contient des certificats non auto-signés, l'authentification par certificat client sous IIS est renvoyée avec un code d'erreur 403.16.

Pour résoudre le problème, vous devez supprimer tous les certificats non auto-signés du magasin racine. Cette commande PowerShell identifiera les certificats non auto-signés:

Get-Childitem cert:\LocalMachine\root -Recurse | 
    Where-Object {$_.Issuer -ne $_.Subject}

Dans ma situation, nous avons déplacé ces certificats non auto-signés dans le magasin des autorités de certification intermédiaires (c.-à-d. CA):

Get-Childitem cert:\LocalMachine\root -Recurse | 
    Where-Object {$_.Issuer -ne $_.Subject} | 
    Move-Item -Destination Cert:\LocalMachine\CA

Selon KB 2801679: Problèmes de communication SSL/TLS après l'installation de KB 931125 , vous risquez également d'avoir trop de certificats de confiance. 

[L] a taille maximale de la liste des autorités de certification approuvées prise en charge par le package de sécurité Schannel est de 16 kilo-octets (Ko). Avoir un grand nombre d'autorités de certification racine tierces dépassera la limite de 16 000 et vous rencontrerez des problèmes de communication TLS/SSL.

Dans ce cas, la solution consiste à supprimer tout certificat d'autorité de certification non fiable ou à cesser d'envoyer la liste des autorités de certification approuvées en définissant l'entrée de registre HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\@SendTrustedIssuerList sur 0 (la valeur par défaut, si elle n'est pas présente, est 1 ).

72
Aaron Jensen

Dans mon cas, j'avais ajouté le certificat racine au magasin de certificats "utilisateur actuel" sur le serveur et j'avais l'erreur 403.16. 

L'ajout de mon certificat racine au magasin d'autorités racines de confiance de l'ordinateur local a résolu le problème.

Suivez les étapes ci-dessous sur le serveur exécutant IIS.

Pour Windows Server 2008 R2:

  1. Cliquez avec le bouton droit sur le fichier de certificat et sélectionnez "Installer le certificat". Cliquez sur Suivant.
  2. Sélectionnez "Placer tous les certificats dans le magasin suivant" et cliquez sur "Parcourir ...".
  3. Cochez 'Afficher les magasins physiques'
  4. Développez "Autorités de certification racines de confiance" et sélectionnez "Ordinateur local". Cliquez sur OK.
  5. Cliquez sur Suivant/Cliquez sur Terminer.

Pour Windows Server 2012 R2:

  1. Cliquez avec le bouton droit sur le fichier de certificat et sélectionnez "Installer Certificat".
  2. Sélectionnez 'Machine locale'. Cliquez sur Suivant.
  3. Sélectionnez "Placer tous les certificats dans le magasin suivant" et cliquez sur "Parcourir ...".
  4. Sélectionnez "Autorités de certification racines de confiance". Cliquez sur OK.
  5. Cliquez sur Suivant/Cliquez sur Terminer.

Pour Windows 7:

  1. Démarrer -> Exécuter -> mmc.exe
  2. Fichier -> 'Ajouter ou supprimer des composants logiciels enfichables'. Sélectionnez "Certificats", cliquez sur "Ajouter>" et sélectionnez "Compte d'ordinateur" puis "Ordinateur local". Cliquez sur Terminer/OK
  3. Développez Certificats (ordinateur local) -> Autorités de certification racines de confiance -> Certificats. Cliquez avec le bouton droit sur Certificats et sélectionnez Toutes les tâches -> Importer.
  4. Sélectionnez le fichier de certificat et cliquez sur Suivant.
  5. Sélectionnez "Placer tous les certificats dans le magasin suivant" et cliquez sur "Parcourir ...".
  6. Cochez 'Afficher les magasins physiques'
  7. Développez "Autorités de certification racines de confiance" et sélectionnez "Ordinateur local". Cliquez sur OK.
  8. Cliquez sur Suivant/Cliquez sur Terminer.
2
PST

J'ai eu cette erreur dans IIS Express:

Erreur HTTP 403.16 - Interdit 

Votre certificat client n'est pas approuvé ou n'est pas valide.

En regardant la TraceLogFiles j'ai vu l'erreur suivante:

<RenderingInfo Culture="en-US">
 <Opcode>MODULE_SET_RESPONSE_ERROR_STATUS</Opcode>
 <Keywords>
  <Keyword>RequestNotifications</Keyword>
 </Keywords>
 <freb:Description Data="Notification">BEGIN_REQUEST</freb:Description>
 <freb:Description Data="ErrorCode">A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.
(0x800b0109)</freb:Description>
</RenderingInfo>

Lorsque j'ai installé Razer Synapse, l'installation a également mis un certificat pour chromasdk.io dans Autorités de certification racines de confiance sous Compte d'ordinateur -> Ordinateur local. J'ai enlevé ceci et puis tout a fonctionné.

0
Ogglas