Comment configurer IIS Express pour demander un certificat client
8
Quelqu'un sait-il comment configurer IIS Express pour exiger un certificat client pour l'accès? J'essaie de déboguer une application ASP.NET problématique qui utilise des certificats clients pour l'authentification.
Proche? La plupart des paramètres IIS Express sont configurés dans Visual Studio et le débogage d'un programme est définitivement lié à la programmation ...
Marko
Puis une question comme "comment installer Visual Studio?" serait régulier? :)
OnOF
2
Je ne veux pas discuter ici, mais FYI IIS Express est principalement utilisé pour le débogage des applications ASP.NET car il offre des fonctionnalités que le serveur de développement ASP.NET ne prend pas en charge. Ma question est liée au débogage. Mais pour déboguer, je dois d'abord le configurer. Je pense qu'il est plus probable que cela soit déjà fait par un développeur et non par un administrateur système car ils utiliseraient le vrai IIS de toute façon.
Marko
Je ne saurais pas comment exiger par programme le certificat client pour l'accès. Cependant, voici une ressource dont j'ai trouvé l'aide. J'espère que cela aide
rahuL
Cet article fait exactement ce que vous voulez avec des étapes détaillées (je ne vais pas copier / coller ici), allez sur dcdevs.blogspot.com/2017/06/… HTH!
Changer applicationhost.config (il y en a deux dans MyDocuments \ IISExpress \ config et l'autre dans program files \ IIS Express \ AppServer par défaut, celui sous votre profil est utilisé lorsque vous exécutez un projet sur IISExpress dans VS 2012 L'autre peut être exécuté en utilisant la ligne de commande, ce que j'ai fait sur la machine de test locale.)
Les deux étapes suivantes doivent toutes deux être effectuées dans Visual Studio Par défaut, lorsqu'un nouveau projet est créé dans VS 2012, il est créé en tant que projet IIS Express. Un ancien projet transféré vers VS2012 devra peut-être réellement modifier ce paramètre.
Dans la page Propriétés du projet sous l'onglet Web, modifiez Utiliser Visual Studio Developer Server pour utiliser le serveur Web IIS local. (Il devrait y avoir une case à cocher grisée indiquant Utiliser IIS Express si vous n'avez pas d'installation IIS régulière sur votre machine (ce qui ne peut pas être fait sur ces machines NMCI.) Il devrait y avoir une URL de projet disant quelque chose comme http: // Localhost: 62714 / (qui doit être le même port défini comme "port spécifique" sous le paramètre Visual Studio Development Server (s'il est défini)
Sélectionnez ensuite le projet dans l'explorateur de solutions et accédez à l'onglet Propriétés. (Parfois, cela doit être fait plusieurs fois avant que les propriétés n'apparaissent.) Cela aura trois propriétés, SSL Enable qui par défaut est false, SSL URL qui est vide avec un nouveau projet et URL qui est définie sur l'URL dans " URL du projet "dans l'onglet Propriétés.
Modifiez la propriété SSL activée sur true et une nouvelle URL SSL sera créée.
Copiez cette URL SSL et revenez à la page des propriétés du projet et collez-la dedans comme nouvelle URL de projet. J'ai frappé "Créer un répertoire virtuel" à ce stade, bien que certains blogs disent qu'il n'est pas nécessaire que vous ayez seulement besoin d'enregistrer le projet et de l'exécuter dans le débogage.
Dans le fichier applicationhost.config sous l'élément "", une nouvelle entrée est créée lors de la première exécution du projet avant d'activer SSL. Il ressemblera à ceci:
J'ai trouvé un blog qui explique en détail comment configurer les demandes de certificat client pour IIS Express (j'ai utilisé Visual Studio 2017, IISExpress 10.0). Apparemment, l'emplacement des applicationhost.configfichiers a changé dans Visual Studio 2015 et versions ultérieures.
Voici un aperçu de ce qu'il dit:
Installez le certificat (notez que la clé privée n'est nécessaire que du côté client) sur la machine de développement (elle doit être visible dans les listes de certificats du navigateur dans leurs paramètres)
À l'aide de Visual Studio, créez une nouvelle application Web
Activez SSL pour votre projet : affichez les propriétés du projet (F4) -> SSL Enabledà True(notez que la SSL URLpropriété est renseignée)
Configurez votre projet pour démarrer en mode SSL : allez dans Propriétés du projet (Alt + Entrée), sélectionnez l' onglet Web et modifiez l'URL du projet à celle de l'étape 3. Par exemplehttps://localhost:44300
Recherchez le fichier de configuration IIS Expressapplicationhost.config : en 2015 ou 2017, le fichier se trouve dans [solution directory]\.vs\config\- dans les versions antérieures, il se trouve dans%UserProfile%\Documents\IISExpress\config\
Le certificat est désormais disponible à partir du code de la Request.ClientCertificatepropriété et doit être affiché lorsque vous ouvrez votre page dans le navigateur.
Réponses:
Utilisez l'outil Gestionnaire IIS et suivez la documentation Microsoft Authentification de mappage de certificat client IIS <iisClientCertificateMappingAuthentication> .
Exemple de configuration:
la source
Ce sont les instructions données par Jason Shavers dans son blog. (Mais cette page n'existe plus.) Scott Hanselman parle également d'activer SSL sur http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx . Mais à aucun moment il ne fait référence au fait que le site nécessite des certificats clients.
Voici les instructions que j'ai suivies:
Changer applicationhost.config (il y en a deux dans MyDocuments \ IISExpress \ config et l'autre dans program files \ IIS Express \ AppServer par défaut, celui sous votre profil est utilisé lorsque vous exécutez un projet sur IISExpress dans VS 2012 L'autre peut être exécuté en utilisant la ligne de commande, ce que j'ai fait sur la machine de test locale.)
Et l'élément
à
Les deux étapes suivantes doivent toutes deux être effectuées dans Visual Studio Par défaut, lorsqu'un nouveau projet est créé dans VS 2012, il est créé en tant que projet IIS Express. Un ancien projet transféré vers VS2012 devra peut-être réellement modifier ce paramètre.
Dans la page Propriétés du projet sous l'onglet Web, modifiez Utiliser Visual Studio Developer Server pour utiliser le serveur Web IIS local. (Il devrait y avoir une case à cocher grisée indiquant Utiliser IIS Express si vous n'avez pas d'installation IIS régulière sur votre machine (ce qui ne peut pas être fait sur ces machines NMCI.) Il devrait y avoir une URL de projet disant quelque chose comme http: // Localhost: 62714 / (qui doit être le même port défini comme "port spécifique" sous le paramètre Visual Studio Development Server (s'il est défini)
Sélectionnez ensuite le projet dans l'explorateur de solutions et accédez à l'onglet Propriétés. (Parfois, cela doit être fait plusieurs fois avant que les propriétés n'apparaissent.) Cela aura trois propriétés, SSL Enable qui par défaut est false, SSL URL qui est vide avec un nouveau projet et URL qui est définie sur l'URL dans " URL du projet "dans l'onglet Propriétés.
Modifiez la propriété SSL activée sur true et une nouvelle URL SSL sera créée.
Dans le fichier applicationhost.config sous l'élément "", une nouvelle entrée est créée lors de la première exécution du projet avant d'activer SSL. Il ressemblera à ceci:
Lorsque vous activez SSL sur votre projet, il devrait ressembler à ceci:
(tous les ports 443xx sont réservés aux projets SSL).
la source
J'ai trouvé un blog qui explique en détail comment configurer les demandes de certificat client pour IIS Express (j'ai utilisé Visual Studio 2017, IISExpress 10.0). Apparemment, l'emplacement des
applicationhost.config
fichiers a changé dans Visual Studio 2015 et versions ultérieures.Voici un aperçu de ce qu'il dit:
SSL Enabled
àTrue
(notez que laSSL URL
propriété est renseignée)https://localhost:44300
applicationhost.config
: en 2015 ou 2017, le fichier se trouve dans[solution directory]\.vs\config\
- dans les versions antérieures, il se trouve dans%UserProfile%\Documents\IISExpress\config\
<access sslFlags="Ssl, SslNegotiateCert, SslRequireCert" />
et<iisClientCertificateMappingAuthentication enabled="true"></iisClientCertificateMappingAuthentication>
Request.ClientCertificate
propriété et doit être affiché lorsque vous ouvrez votre page dans le navigateur.la source