So konfigurieren Sie IIS Express, um nach einem Client-Zertifikat zu fragen

8

Weiß jemand, wie man IIS Express so konfiguriert, dass für den Zugriff ein Client-Zertifikat erforderlich ist? Ich versuche, eine problematische ASP.NET-Anwendung zu debuggen, die Clientzertifikate zur Authentifizierung verwendet.

Marko
quelle
1
Schließen? Die meisten IIS Express-Einstellungen werden in Visual Studio konfiguriert und das Debuggen eines Programms hängt definitiv mit der Programmierung zusammen ...
Marko
Dann eine Frage wie "Wie installiere ich Visual Studio?" wäre eine normale? :)
Uhr
2
Ich möchte hier nicht streiten, aber FYI IIS Express wird hauptsächlich zum Debuggen von ASP.NET-Anwendungen verwendet, da es Funktionen bietet, die der ASP.NET-Entwicklungsserver nicht unterstützt. Meine Frage bezieht sich auf das Debuggen. Aber zum Debuggen muss ich es zuerst konfigurieren. Ich denke, es ist wahrscheinlicher, dass dies bereits von einigen Entwicklern und nicht von einem Systemadministrator durchgeführt wird, da diese sowieso den echten IIS verwenden würden.
Marko
Ich würde nicht wissen, wie man das Client-Zertifikat programmgesteuert für den Zugriff benötigt. Doch hier ist eine Ressource , fand ich Hilfe. Hoffe das hilft
rahuL
Dieser Artikel macht genau das, was Sie wollen, mit detaillierten Schritten (ich werde hier nicht kopieren / einfügen), gehen Sie zu dcdevs.blogspot.com/2017/06/… HTH!
Dotnetftw

Antworten:

5

Verwenden Sie das IIS Manager-Tool und befolgen Sie die Microsoft-Dokumentation IIS Client Certificate Mapping Authentication <iisClientCertificateMappingAuthentication> .

Beispielkonfiguration:

<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>
Mufasa
quelle
Keine wirklich relevante Antwort.
Azimuth
1

Dies waren die Anweisungen, die Jason Shavers in seinem Blog gab. (Diese Seite existiert jedoch nicht mehr.) Scott Hanselman spricht auch über das Aktivieren von SSL unter http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx . Er bezieht sich jedoch zu keinem Zeitpunkt darauf, dass für die Site Client-Zertifikate erforderlich sind.

Dies sind die Anweisungen, denen ich gefolgt bin:

Ändern Sie applicationhost.config (Es gibt zwei davon unter MyDocuments \ IISExpress \ config und die andere unter Programmdateien \ IIS Express \ AppServer. Die unter Ihrem Profil wird standardmäßig verwendet, wenn Sie ein Projekt unter IISExpress in VS 2012 ausführen. Die andere kann über die Befehlszeile ausgeführt werden, die ich auf dem lokalen Testcomputer ausgeführt habe.)

  1. Ändern Sie das Element

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

Und das Element

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

zu

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

Die nächsten beiden Schritte müssen beide in Visual Studio ausgeführt werden. Wenn ein neues Projekt in VS 2012 erstellt wird, wird es standardmäßig als IIS Express-Projekt erstellt. Ein älteres Projekt, das auf VS2012 übertragen wurde, muss diese Einstellung möglicherweise tatsächlich ändern.

  1. Ändern Sie auf der Seite Projekteigenschaften auf der Registerkarte Web die Option Visual Studio Developer Server verwenden in Lokalen IIS-Webserver verwenden. (Das Kontrollkästchen "IIS Express verwenden" sollte abgeblendet sein, wenn auf Ihrem Computer keine reguläre IIS-Installation installiert ist (was auf diesen NMCI-Computern nicht möglich ist). Es sollte eine Projekt-URL mit der Aufschrift " http: //" vorhanden sein. Localhost: 62714 / ( Dies sollte derselbe Port sein, der unter der Einstellung von Visual Studio Development Server als "spezifischer Port" festgelegt wurde (falls festgelegt).

  2. Wählen Sie dann im Solution Explorer das Projekt aus und wechseln Sie zur Registerkarte Eigenschaften. (Manchmal muss dies einige Male durchgeführt werden, bevor die Eigenschaften angezeigt werden.) Dies hat drei Eigenschaften: SSL-Aktivierung mit dem Standardwert false, SSL-URL mit einem neuen Projekt leer und URL mit der URL in " Projekt-URL "auf der Registerkarte Eigenschaften.

Ändern Sie die Eigenschaft SSL enabled in true, und eine neue SSL-URL wird erstellt.

  1. Kopieren Sie diese SSL-URL, kehren Sie zur Seite mit den Projekteigenschaften zurück und fügen Sie sie dort als neue Projekt-URL ein. Ich habe an dieser Stelle auf "Virtuelles Verzeichnis erstellen" geklickt, obwohl einige Blogs sagen, dass dies nicht erforderlich ist, da Sie nur das Projekt speichern und im Debug ausführen müssen.

In der Datei applicationhost.config unter dem Element "" wird beim ersten Ausführen des Projekts ein neuer Eintrag vorgenommen, bevor Sie SSL aktivieren. Es wird so aussehen:

        <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>

Wenn Sie SSL in Ihrem Projekt aktivieren, sollte es folgendermaßen aussehen:

        <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>

(Alle 443xx-Ports sind für SSL-Projekte reserviert).

user1161391
quelle
0

Ich habe ein Blog gefunden , in dem detailliert beschrieben wird, wie Clientzertifikatanforderungen für IIS Express konfiguriert werden (ich habe Visual Studio 2017, IISExpress 10.0 verwendet). Anscheinend hat sich der Speicherort der applicationhost.configDateien in Visual Studio 2015 und höher geändert.

Hier ist ein Überblick darüber, was darin steht:

  1. Installieren Sie das Zertifikat (beachten Sie, dass der private Schlüssel nur auf der Clientseite erforderlich ist) auf dem Entwicklungscomputer (er sollte in den Zertifikatlisten des Browsers in den Einstellungen sichtbar sein).
  2. Erstellen Sie mit Visual Studio eine neue Webanwendung
  3. SSL für Ihr Projekt aktivieren : Zeigen Sie die Eigenschaften des Projekts an (F4) -> SSL Enabledbis True(beachten Sie, dass die SSL URLEigenschaft gefüllt wird)
  4. Stellen Sie Ihr Projekt so ein, dass es im SSL-Modus startet : Gehen Sie zu Projekteigenschaften (Alt + Eingabetaste), wählen Sie die Registerkarte Web und ändern Sie die Projekt-URL in die aus Schritt 3. ZBhttps://localhost:44300
  5. Suchen Sie die IIS Express-Konfigurationsdatei applicationhost.config : In den Jahren 2015 oder 2017 befindet sich die Datei in [solution directory]\.vs\config\- in früheren Versionen befindet sie sich in%UserProfile%\Documents\IISExpress\config\
  6. Ändern Sie die Datei applicationhost.config : Set <access sslFlags="Ssl, SslNegotiateCert, SslRequireCert" />und<iisClientCertificateMappingAuthentication enabled="true"></iisClientCertificateMappingAuthentication>
  7. Das Zertifikat ist jetzt über den Code in der Request.ClientCertificateEigenschaft verfügbar und sollte beim Öffnen Ihrer Seite im Browser angefordert werden.
Fragen Sie B.
quelle