Come configurare IIS Express per richiedere il certificato client


8

Qualcuno sa come configurare IIS Express per richiedere il certificato client per l'accesso? Sto cercando di eseguire il debug di un'applicazione ASP.NET problematica che utilizza i certificati client per l'autenticazione.


1
Vicino? La maggior parte delle impostazioni di IIS Express sono configurate in Visual Studio e il debug di un programma è sicuramente correlato alla programmazione ...
Marko

Quindi una domanda del tipo "come installare Visual Studio?" sarebbe normale? :)
dal

2
Non voglio discutere qui, ma FYI IIS Express viene utilizzato principalmente per il debug di applicazioni ASP.NET in quanto offre funzionalità che il server di sviluppo ASP.NET non supporta. La mia domanda è relativa al debug. Ma per eseguire il debug devo prima configurarlo. Penso che sia più probabile che ciò sia già stato fatto da alcuni sviluppatori e non da un amministratore di sistema in quanto utilizzerebbero comunque il vero IIS.
Marko,

Non saprei come richiedere a livello di codice il certificato client per l'accesso. Tuttavia, ecco una risorsa da cui ho trovato aiuto. Spero che questo aiuti
rahuL

Questo articolo fa esattamente quello che vuoi con passaggi dettagliati, (non copierò / incollerò qui), vai su dcdevs.blogspot.com/2017/06/… HTH!
dotnetftw,

Risposte:


5

Utilizzare lo strumento Gestione IIS e seguire la documentazione Microsoft Autenticazione mappatura certificati client IIS <iisClientCertificateMappingAuthentication> .

Configurazione di esempio:

<location path="Default Web Site">
   <system.webServer>
      <security>
         <authentication>
            <windowsAuthentication enabled="false" />
            <anonymousAuthentication enabled="false" />
            <digestAuthentication enabled="false" />
            <basicAuthentication enabled="false" />
            <iisClientCertificateMappingAuthentication enabled="true"
                  manyToOneCertificateMappingsEnabled="true">
               <manyToOneMappings>
                  <add name="Contoso Employees"
                        enabled="true"
                        permissionMode="Allow"
                        userName="Username"
                        password="[enc:AesProvider:57686f6120447564652c2049495320526f636b73:enc]">
                     <rules>
                        <add certificateField="Subject"
                           certificateSubField="O"
                           matchCriteria="Contoso"
                           compareCaseSensitive="true" />
                     </rules>
                  </add>
               </manyToOneMappings>
            </iisClientCertificateMappingAuthentication>
         </authentication>
         <access sslFlags="Ssl, SslNegotiateCert" />
      </security>
   </system.webServer>
</location>

Non proprio una risposta pertinente.
Azimuth,

1

Queste erano le istruzioni fornite da Jason Shavers nel suo blog. (Ma quella pagina non esiste più.) Scott Hanselman parla anche di abilitare SSL su http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx . Ma non fa mai riferimento al fatto che il sito richieda certificati client.

Queste sono le istruzioni che ho seguito:

Modifica applicationhost.config (ce ne sono due in MyDocuments \ IISExpress \ config e l'altro in file di programma \ IIS Express \ AppServer per impostazione predefinita, quello utilizzato nel profilo viene utilizzato quando si esegue un progetto su IISExpress in VS 2012 L'altro può essere eseguito utilizzando la riga di comando che è ciò che ho fatto sulla macchina di prova locale.)

  1. Cambia l'elemento

<access sslFlags = "None" /> to <access sslFlags = "SslNegotiateCert" />

E l'elemento

<iisClientCertificateMappingAuthentication enabled = "false"> </ iisClientCertificateMappingAuthentication>

per

<iisClientCertificateMappingAuthentication enabled = "true"> </ iisClientCertificateMappingAuthentication>

I due passaggi successivi devono essere entrambi eseguiti in Visual Studio Per impostazione predefinita, quando viene creato un nuovo progetto in VS 2012, viene creato come progetto IIS Express. Un progetto precedente trasferito su VS2012 potrebbe dover effettivamente modificare tale impostazione.

  1. Nella pagina Proprietà progetto nella scheda Web, modifica Usa server per sviluppatori Visual Studio per utilizzare il server Web IIS locale. (Dovrebbe essere presente una casella di controllo in grigio che dice Usa IIS Express se non hai una normale installazione IIS sul tuo computer (che non può essere fatto su questi computer NMCI.) Dovrebbe esserci un URL del progetto che dice qualcosa come http: // Localhost: 62714 / (che dovrebbe essere la stessa porta impostata come "porta specifica" nell'impostazione del server di sviluppo di Visual Studio (se impostata)

  2. Quindi selezionare il Progetto in Esplora soluzioni e andare alla scheda Proprietà. (A volte questo deve essere fatto un paio di volte prima che vengano visualizzate le proprietà.) Questo avrà tre proprietà, SSL Enable che per impostazione predefinita è false, URL SSL che è vuoto con un nuovo progetto e URL che è impostato sull'URL in " progetto URL "nella scheda delle proprietà.

Modificare la proprietà abilitata SSL su true e verrà creato un nuovo URL SSL.

  1. Copia l'URL SSL e torna alla pagina delle proprietà del progetto e incollalo come nuovo URL del progetto. Ho premuto "Crea directory virtuale" a questo punto, sebbene alcuni blog affermino che non è necessario salvare il progetto ed eseguirlo solo nel debug.

Nel file applicationhost.config sotto l'elemento "" viene creata una nuova voce quando il progetto viene eseguito prima di abilitare SSL. Sarà simile a questo:

        <site name="WebApplication1" id="2">
            <application path="/" applicationPool="Clr4IntegratedAppPool">
                <virtualDirectory path="/" physicalPath="c:\users\edward.joell\documents\visual studio 2012\Projects\WebApplication1\WebApplication1" />
            </application>
            <bindings>
                <binding protocol="http" bindingInformation="*:61313:localhost" />
            </bindings>
        </site>

Quando abiliti SSL sul tuo progetto, dovrebbe apparire così:

        <site name="WebApplication1" id="2">
            <application path="/" applicationPool="Clr4IntegratedAppPool">
                <virtualDirectory path="/" physicalPath="c:\users\edward.joell\documents\visual studio 2012\Projects\WebApplication1\WebApplication1" />
            </application>
            <bindings>
                <binding protocol="http" bindingInformation="*:61313:localhost" />
    <binding protocol="https" bindingInformation="*:44313:localhost" />
            </bindings>
        </site>

(tutte le porte 443xx sono riservate ai progetti SSL).


0

Ho trovato un blog che spiegava come configurare le richieste di certificati client per IIS Express (ho usato Visual Studio 2017, IISExpress 10.0). Apparentemente la posizione dei applicationhost.configfile è cambiata in Visual Studio 2015 e versioni successive.

Ecco uno schema di ciò che dice:

  1. Installa il certificato (nota che la chiave privata è necessaria solo dal lato client) sulla macchina di sviluppo (dovrebbe essere visibile negli elenchi di certificati del browser nelle loro impostazioni)
  2. Utilizzando Visual Studio, creare una nuova applicazione Web
  3. Abilita SSL per il tuo progetto : visualizza le proprietà del progetto (F4) -> SSL Enableda True(nota che la SSL URLproprietà viene popolata)
  4. Imposta l'avvio del tuo progetto in modalità SSL : vai su Proprietà progetto (Alt + Invio), seleziona la scheda Web e modifica l'URL del progetto in quello dal passaggio 3. Ad es.https://localhost:44300
  5. Individua il file di configurazione di IIS Express applicationhost.config : nel 2015 o 2017, il file si trova in [solution directory]\.vs\config\- nelle versioni precedenti si trova in%UserProfile%\Documents\IISExpress\config\
  6. Modifica il file applicationhost.config : Set <access sslFlags="Ssl, SslNegotiateCert, SslRequireCert" />e<iisClientCertificateMappingAuthentication enabled="true"></iisClientCertificateMappingAuthentication>
  7. Il certificato è ora disponibile dal codice nella Request.ClientCertificateproprietà e dovrebbe essere richiesto quando si apre la pagina nel browser.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.