2017-08-18 1 views
0

Ich versuche ASP.Net Web-Anwendung zu entwickeln, um Smartcard-Authentifizierung zu akzeptieren. Ich habe eine Web-App erstellt und in IIS bereitgestellt. Das Stammzertifikat wird auf dem vertrauenswürdigen Stammverzeichnis der IIS-Maschine installiert, das von CA autorisiert wurde. Für diese Webanwendung habe ich Serverzertifikat hinzugefügt, SSL erforderlich festgelegt und auf Zertifikate akzeptieren festgelegt. Wenn der Client auf diese Webanwendung zugreift, fordert er das Clientzertifikat an, chrome gibt eine Eingabeaufforderung für das Clientzertifikat, die Smartcard wird auf dem Clientcomputer eingefügt und bei Eingabe der PIN gibt der Benutzer eine gültige PIN ein und kann die Homepage abrufen die Web-App. Till, das alles funktioniert wie erwartet, aber an dieser Stelle möchte ich das Client-Zertifikat lesen und diesen Client mit Zertifikatskette validieren. Basierend auf dem Client-Zertifikat möchte ich auch die Rollen für diesen Benutzer abrufen. Jedes Mal, wenn ich versuche, das Clientzertifikat zu lesen, kann ich das Zertifikat nicht abrufen. Im Folgenden finden Sie Code Smartcard-Zertifikate zu lesen:Können wir die Smartcard-Authentifizierung in der Client Server Architecture verwenden?

`

X509Store store = null; 
store = new X509Store(StoreName.Root); 
store.Open(OpenFlags.ReadOnly); 
var certsAuthEnc = store.Certificates.Find(X509FindType.FindByKeyUsage, (int)CertificateType.DigitalSignature, false); 

`

Hier wird store.Certificates.Count als 0 kommt

Bitte helfen, wie ich Zertifikate auf Client-Seite lesen kann?

Antwort

0

ich das Client-Zertifikat bekam aber ohne private Schlüssel wie folgt: var x509 = new X509Certificate2(this.Request.ClientCertificate.Certificate);

Dieses Zertifikat kann mit Kette validiert werden.

0

In Ihrem Beispiel öffnen Sie den aktuellen Benutzer "Root" Store, es ist mir nicht klar, warum Ihre Beschreibung gegeben. Dieser Store enthält nur eine Liste von vertrauenswürdigen Roots, die vom Administrator und dem aktuellen Benutzer konfiguriert wurden.

Die Zertifikate des aktuellen Benutzers befinden sich im "Mein" Geschäft, wenn Sie das suchen. Wenn Sie das Zertifikat des aktuellen Benutzers im Kontext der ASP.NET-Anwendung aus irgendeinem Grund validieren möchten, sollten Sie X509Chain (https://www.google.com/search?q=X509Chain&oq=X509Chain&aqs=chrome..69i57.318j0j7&sourceid=chrome&ie=UTF-8) und nicht X509Store verwenden.

Dieser Beitrag wird wahrscheinlich hilfreich sein, auch: https://msdn.microsoft.com/en-us/library/ms148581(v=vs.110).aspx

Ryan

+0

Vielen Dank für Ihre Hilfe, warum ich mich auf Root-Speicherort bezieht, ist mein Anmeldefenster auf der Serverseite, auf meinem IIS-Server sind Zertifikate auf Root-Speicherort installiert. Grundsätzlich, was ich suche, ist, in meiner ASP. Net Web App, wenn PIN validiert ist, sollte ich diese digitalen Signaturdaten erhalten, um die nächsten Schritte zu überprüfen, ob der Benutzer in aktuellen Zeitstempeln etc. gültig ist. Wie kann ich das bekommen digital signierte Daten, wenn der Benutzer eine PIN eingibt? –

+0

Der Stammspeicher ist nur eine Liste von selbstsignierten Stammzertifikaten. Sie denken, dass der "lokale Computer" -Bereich nicht "Stammspeicher" ist. Wie ich bereits erwähnt habe, möchten Sie jedoch nicht auf die Liste der Vertrauensanker schauen, die die vom Kunden präsentierte Kette validieren soll. – rmhrisk

Verwandte Themen