web-dev-qa-db-fra.com

Comment créer des certificats clients pour les tests locaux d'authentification bidirectionnelle sur SSL?

J'essaie de configurer l'authentification bidirectionnelle sur une application Web exécutée sur IIS7. Les clients seront principalement des appareils mobiles et, dans un premier temps, j'essaie de lancer une démo à l'aide d'un iPad de 3e génération. J'ai pensé commencer par le faire fonctionner sur mon poste de travail (qui exécute également IIS) en premier, puis copier le certificat de travail sur l'iPad.

Mais j'ai heurté un mur.

J'ai réussi à faire fonctionner le site en toute sécurité sur https et j'ai installé un certificat de serveur auto-signé, mais je n'arrive pas à comprendre comment générer un certificat client que je peux installer sur l'iPad. Comme je travaille sur un poste de travail local exécutant Windows 7, je ne peux pas utiliser le http://machinename/CertSvr Habituel pour ce faire.

Je me demande donc s'il existe un moyen d'obtenir makecert pour générer des certificats client de test ou si je peux changer l'indicateur d'utilisation dans le certificat serveur pour le rendre approprié pour une utilisation sur le client. Ou peut-être existe-t-il un outil que le dernier jour de Google n'a pas encore découvert?

Mise à jour:

J'ai trouvé ce guide et l'ai suivi à la lettre. Tout semblait fonctionner, sans erreur, et je me suis retrouvé avec deux fichiers pfx, un pour le serveur et un pour le client (je les ai générés en utilisant pvk2pfx Et j'ai conservé les .pvk Et .cer Au cas où).

J'ai installé le certificat serveur sous Certificates (Local Computer) > Trusted Root Certification Authority et installé le certificat client sous Certificates (Current User) > Personal. J'ai également importé le certificat de serveur (celui de CA) dans IIS. Tout fonctionne correctement lorsque IIS est configuré pour accepter ou ignorer les certificats clients. Cependant, une fois qu'il est défini sur "Exiger", j'obtiens un 403.7 lors de la demande du site. J'ai également essayé d'importer le certificat client au magasin de certificats dans IE/Chrome mais encore une fois pas de dés.

Y a-t-il quelque chose d'évident que je fais mal?

23
indra

Peut-être que cela n'existait pas lorsque vous avez posé cette question, mais Microsoft a maintenant un GUIDE pour faire exactement cela. Facile à suivre et a parfaitement fonctionné pour moi!

4
NSjonas

Activer les certificats clients sur local IIS Express :

Modifiez\YourSlnFolder\.vs\config\applicationhost.config -> <section name="access" overrideModeDefault="Deny" /> à <section name="access" overrideModeDefault="Allow" />

<sectionGroup name="system.webServer">
...
  <sectionGroup name="security">
  ...
    <section name="access" overrideModeDefault="Allow" />

Modifiez ensuite votre Web.config comme ceci:

<configuration>
    <system.webServer>
        <security>
            <access sslFlags="SslRequireCert" />
        </security>
    </system.webServer>
</configuration>

Activer les certificats clients sur [~ # ~] iis [~ # ~] :

Accédez au site Web dans IIS Manager et cliquez sur Paramètres SSL. Ensuite, définissez l'application comme Exiger SSL et Exiger les certificats clients.

enter image description here

Création de nouveaux certificats:

Lancer l'invite de commande du développeur VS

Certificat racine:

makecert.exe -r -n "CN=TestRootCertificate" -pe -sv TestRootCertificate.pvk -a sha1 -len 2048 -b 01/01/2017 -e 01/01/2030 -cy authority TestRootCertificate.cer

Tapez votre mot de passe.

Créer une liste de révocation de certificats (CRL)

makecert -crl -n "CN=TestRootCertificate" -r -sv TestRootCertificate.pvk TestRootCertificate.crl

Bundle en .pfx (pvk2pfx.exe nécessite "développement de bureau avec C++" installé pour VS2017)

pvk2pfx.exe -pvk TestRootCertificate.pvk -pi {password} -spc TestRootCertificate.cer -pfx TestRootCertificate.pfx

Certificat client du certificat racine:

makecert.exe -ic TestRootCertificate.cer -iv TestRootCertificate.pvk -pe -sv localtestclientcert.pvk -a sha1 -n "CN=localtestclientcert" -len 2048 -b 01/01/2015 -e 01/01/2030 -sky exchange localtestclientcert.cer -eku 1.3.6.1.5.5.7.3.2

Tapez votre mot de passe.

pvk2pfx.exe -pvk localtestclientcert.pvk -pi {password} -spc localtestclientcert.cer -pfx localtestclientcert.pfx

Importez les certificats.

Démarrez mmc.exe.

File -> Add or Remove Snap-ins -> Certificates -> Add -> Computer account -> Local computer

Certificates (Local Computer) -> Personal -> Certificates -> Right click -> All tasks -> Import -> localtestclientcert.pfx

Certificates (Local Computer) -> Trusted Root Certification Authorities -> Certificates -> Right click -> All tasks -> Import -> RootCertificate.cer

Utilisé pour l'authentification dans un navigateur:

File -> Add or Remove Snap-ins -> Certificates -> Add -> My user account

Certificates - Current User -> Personal -> Certificates -> Right click -> All tasks -> Import -> localtestclientcert.pfx

L'accès à votre site nécessite désormais un certificat client auquel le serveur fait confiance:

enter image description here

Si vous avez suivi ce guide et obtenez une erreur comme:

HTTP Error 500.19 - Internal Server Error
The requested page cannot be accessed because the related configuration data for the page is invalid.

Ou

HTTP Error 403.7 - Forbidden
The page you are attempting to access requires your browser to have a Secure Sockets Layer (SSL) client certificate that the Web server recognizes.

Vous devrez peut-être redémarrer votre ordinateur. Notez qu'il ne suffira pas de fermer le processus iisexpress ou Visual Studio. Le 500.19 peut être résolu sans redémarrage mais les certificats sont délicats, donc l'approche recommandée consiste à redémarrer votre ordinateur.

Si vous obtenez l'erreur The request was aborted: Could not create SSL/TLS secure channel cela peut être dû au fait que le pool d'applications n'a pas accès au certificat spécifique.

Certificats (ordinateur local) -> Personnel -> Certificats -> localtestclientcert -> Clic droit -> Toutes les tâches -> Gérer la clé privée -> Ajouter IIS APPPOOL\YourWebSite et lui accorder le contrôle total.

1
Ogglas