J'ai essayé de mettre en place un site Web avec un système SSL bidirectionnel dans IIS 10. Cela ne se passe pas très bien.
J'ai déjà un domaine que j'ai obtenu par NameCheap, et j'ai un DNS par CloudFlare (DNS seulement, pas de proxy).
Le serveur a un certificat pour ce domaine que j'ai obtenu par Certify avec Let's Encrypt.
Sur ce serveur, j'ai configuré AD CS et l'ai utilisé pour créer une autorité de certification.
CA Web Enrollment est actif et accepte les demandes uniquement à partir d'une connexion VPN mise en place via RRAS (je ne voulais pas qu'il soit ouvert à l'Internet, et d'ailleurs la connexion VPN utilise le certificat que j'ai obtenu précédemment, donc cela fonctionne correctement).
Le PC client a lancé un certificat et l'a envoyé au serveur en utilisant CA Web Enrollment à travers le VPN. Cette demande a ensuite été émise, et le certificat résultant ainsi que l'AC ont ensuite été importés dans la base de données CurrentUser \My , LocalMachine \TrustedRoot respectivement. J'ai également vérifié que le certificat du client possède une clé privée.
Jusqu'à présent, la situation des certificats est la suivante :
-Serveur : CA (LocalMachine \TrustedRoot (pas de clé) et LocalMachine \My (clé)), le certificat du serveur (LocalMachine \My (clé)).
-Client : CA (LocalMachine \TrustedRoot (sans clé)), le certificat du client (CurrentUser \My (clé)).
Vient ensuite la configuration de IIS : Il y a trois sites sur le serveur. Le premier est le site par défaut avec l'application certsrv, il n'écoute que sur l'IP VPN et localhost, et n'a que HTTPS actif avec le certificat du serveur (ports 443 tous les deux). Le second est un site FTP qui n'écoute que sur l'IP VPN et le port 21. Ceux-ci ne sont pas pertinents, je les mentionne seulement parce que je ne veux pas oublier quelque chose.
Le troisième est celui qui nous intéresse. Il écoute le nom de domaine, n'importe quelle adresse IP, et a à la fois HTTP et HTTPS actifs (avec les ports 80 et 443 respectivement). HTTP est seulement actif pour que URL Rewrite puisse le rediriger vers HTTPS, et HTTPS utilise le certificat du serveur.
Ce site a le SSL requis activé et les certificats clients requis.
Dans Authentification, toutes les méthodes sont désactivées.
Dans system.webServer/security/authentication/iisClientCertificateMappingAuthentication, Enabled a la valeur true et manyToOneCertificateMappingsEnabled la valeur true. Dans manyToOneMappings, j'ai un élément mappé à un utilisateur sur le serveur, et dans les règles, j'en ai une avec certificateField=Issuer, certificateSubField=CN, et matchCriteria="nom de l'AC que j'ai créée".
Une clé de registre nommée SendTrustedIssuerList avec une valeur de 1 a été créée dans l'ordinateur \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL.
Le certificat du serveur a été supprimé et ajouté à nouveau avec clientcertnegotiation=enabled à la liaison domain:443 sur le site en utilisant netsh dans powershell.
Enfin, j'ai utilisé IISCrypto à partir de https://www.nartac.com/Products/IISCrypto/ pour mettre en place des protocoles dans l'ordinateur \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols.
C'est tout ce que j'ai fait jusqu'à présent et cela devrait couvrir toutes les réponses à des problèmes similaires partout sur Internet, mais tout ce que cela fait, c'est me donner une erreur 403.7. J'ai utilisé wireshark pour vérifier le trafic TLS pendant une tentative de connexion et le serveur semble envoyer le certificat de demande avec la liste des CA de confiance (mon CA est inclus dans la liste) mais je ne peux pas obtenir un navigateur qui me demande un certificat client. J'ai oublié de mentionner que j'ai ajouté les certificats de l'autorité de certification et du client via les navigateurs et que l'option Do not prompt when you have only one cerrificate d'IE 11 est désactivée, mais toujours rien.
Des idées ?