1

Ich habe eine Menge ungelöster Fragen zu diesem Thema gesehen. Anscheinend haben viele Entwickler dieses Problem past bekommen, aber ich habe keine veröffentlichten Lösungen gesehen.Anfrage Client-Zertifikat

Ich versuche, eine Smartcard (X.509 CAC) für meine ASP.NET MVC 5 Web App zu lesen. Wenn ich versuche, die Zertifikatsinformationen wie folgt abzurufen:

Das Zertifikat hat leere Werte.

Das Problem scheint zu sein, ich präsentiere nicht den Dialog, um Benutzerzertifikat Informationen wie ich auf anderen Websites zu sehen. Wie stelle ich diesen Dialog zur Verfügung?

Ich verwende es mit SSL aktiviert. Mein applicationhost.config hat dies darin:

<authentication> 
     <anonymousAuthentication enabled="false"/> 
     <basicAuthentication enabled="false" /> 
     <clientCertificateMappingAuthentication enabled="false" /> 
     <digestAuthentication enabled="false" /> 
     <iisClientCertificateMappingAuthentication enabled="true" manyToOneCertificateMappingsEnabled="true"> 
     <manyToOneMappings> 
      <add name="Authentication Certificate" 
       enabled="true" 
       permissionMode="Allow" 
       userName="foo" 
       password="bar"> 
       <rules> 
        <add certificateField="Issuer" certificateSubField="CN" matchCriteria="*localhost*" compareCaseSensitive="false" /> 
       </rules> 
      </add> 
     </manyToOneMappings> 
     </iisClientCertificateMappingAuthentication> 
     <windowsAuthentication enabled="false"> 
      <providers> 
       <add value="Negotiate" /> 
       <add value="NTLM" /> 
      </providers> 
     </windowsAuthentication> 
    </authentication> 

Hier ist mein Zugangsknoten:

<access sslFlags="SslRequireCert" /> 

Hinweis: dass Benutzername/Passwort = foo/bar verdächtig aussieht. Warum sollte dies auf der Benutzerseite überhaupt bevölkert sein? Ist ein erforderlicher Dienstaccount damit verbunden?

Ich habe auch versucht, einfachere Konfigurationen:

<authentication> 
     <anonymousAuthentication enabled="false" userName="" /> 
     <basicAuthentication enabled="false" /> 
     <clientCertificateMappingAuthentication enabled="true" /> 
     <digestAuthentication enabled="false" /> 
     <iisClientCertificateMappingAuthentication enabled="false"> 
     </iisClientCertificateMappingAuthentication> 
     <windowsAuthentication enabled="false"> 
      <providers> 
       <add value="Negotiate" /> 
       <add value="NTLM" /> 
      </providers> 
     </windowsAuthentication> 
    </authentication> 

Was hat die Seite geschieht in der Regel präsentiert wird, aber ich bin nicht für mein Client-Zertifikat erbeten.

Ich habe eindeutig die Client-Zertifikate, also bin ich mir nicht sicher, warum andere Websites können sie anfordern.

enter image description here

I IIS Express bin mit 10.

Antwort

0

Das Problem war, Visual Studio 2015 seine IIS Express applicationhost.config Datei in einem der untergeordneten Verzeichnissen der Lösung versetzt. Es befindet sich im Verzeichnis .vs/config.

jedem Mein Vorschlag sonst in dieses Problem laufen ist:

(1) Zunächst wird die Konfiguration stellen Sie sicher, über das, was denken Sie, würde (SslRequireCert oder verhandeln) arbeiten. Dieser Teil wird Sie wahrscheinlich nicht aufhalten, wenn Sie wissen, was in der Datei applicationhost.config sein sollte.

(2) Zweitens müssen die Zertifikate korrekt eingerichtet sein. Ich glaube nicht, dass dies ein Problem in meinem Fall war, aber es könnte Sie daran hindern, diese Eigenschaft zu lesen. Sie sollten in der Lage sein, mmc zu öffnen (geben Sie mmc ein, nachdem Sie die Windows-Schaltfläche gedrückt haben), gehen Sie zu Zertifikate (oder fügen Sie das Snap-In hinzu, wenn Sie es nicht haben) und stellen Sie sicher, dass Zertifikate und Zertifikate/Zertifikate oder vertrauenswürdige Stammzertifikate/Zertifikate haben die Zertifikate, die Sie benötigen.

Und, wie gesagt:

(3) Stellen Sie sicher, dass Sie die richtige applicationhost.config haben.