Ich versuche, die bidirektionale Authentifizierung in einer Webanwendung einzurichten, die auf IIS7 ausgeführt wird. Die Kunden werden hauptsächlich mobile Geräte sein und in erster Linie versuche ich, eine Demo mit einem iPad der 3. Generation zum Laufen zu bringen. Ich dachte, ich fange damit an, es zuerst auf meiner Workstation (auf der auch IIS läuft) zum Laufen zu bringen und dann das Arbeitszertifikat über das iPad zu kopieren.
Ich habe jedoch eine Wand getroffen.
Ich muss die Site sicher über https betreiben und habe ein selbstsigniertes Serverzertifikat installiert, kann jedoch anscheinend nicht herausfinden, wie ein Clientzertifikat erstellt wird was ich auf dem iPad installieren kann. Da ich auf einer lokalen Workstation unter Windows 7 arbeite, kann ich dazu nicht den üblichen http://machinename/CertSvr
Verwenden.
Ich frage mich also, ob es eine Möglichkeit gibt, makecert
zum Generieren von Testclientzertifikaten zu verwenden, oder ob ich das Verwendungsflag im Serverzertifikat so ändern kann, dass es für die Verwendung auf dem Client geeignet ist. Oder gibt es vielleicht ein Tool, das der letzte Tag des Googelns noch nicht entdeckt hat?
Aktualisieren:
Ich fand diese Anleitung und folgte ihm bis zum Brief. Es schien alles zu funktionieren, es gab keine Fehler und ich erhielt zwei PFX-Dateien, eine für den Server und eine für den Client (diese habe ich mit pvk2pfx
Generiert und die ursprünglichen .pvk
Und .cer
Dateien nur für den Fall).
Ich habe das Serverzertifikat unter Certificates (Local Computer) > Trusted Root Certification Authority
und das Clientzertifikat unter Certificates (Current User) > Personal
installiert. Ich habe auch das Serverzertifikat (das CA-Zertifikat) in IIS importiert. Es funktioniert alles einwandfrei, wenn IIS zum Akzeptieren oder Ignorieren von Client-Zertifikaten konfiguriert ist. Wenn es jedoch auf 'Require' gesetzt ist, erhalte ich beim Anfordern der Site eine 403.7. Ich habe auch versucht zu importieren Das Client-Zertifikat wird im Zertifikatspeicher in IE/Chrome aber wieder nicht gewürfelt.
Gibt es etwas offensichtliches, was ich falsch mache?
Vielleicht gab es das nicht, als Sie diese Frage gestellt haben, aber Microsoft hat jetzt eine ANLEITUNG , um genau das zu tun. Einfach zu befolgen und perfekt für mich gearbeitet!
Aktivieren Sie Client-Zertifikate auf lokalem IIS Express :
Ändern Sie\YourSlnFolder\.vs\config\applicationhost.config -> <section name="access" overrideModeDefault="Deny" />
In <section name="access" overrideModeDefault="Allow" />
.
<sectionGroup name="system.webServer">
...
<sectionGroup name="security">
...
<section name="access" overrideModeDefault="Allow" />
Dann bearbeiten Sie Ihre Web.config wie folgt:
<configuration>
<system.webServer>
<security>
<access sslFlags="SslRequireCert" />
</security>
</system.webServer>
</configuration>
Aktivieren Sie Client-Zertifikate auf [~ # ~] iis [~ # ~] :
Rufen Sie die Website im IIS Manager auf und klicken Sie auf SSL-Einstellungen. Stellen Sie dann die Anwendung auf SSL erforderlich und Client-Zertifikate erforderlich.
Starten Sie die VS Developer-Eingabeaufforderung
makecert.exe -r -n "CN=TestRootCertificate" -pe -sv TestRootCertificate.pvk -a sha1 -len 2048 -b 01/01/2017 -e 01/01/2030 -cy authority TestRootCertificate.cer
Geben Sie Ihr Passwort ein.
Erstellen einer Zertifikatsperrliste (Certificate Revocation List, CRL)
makecert -crl -n "CN=TestRootCertificate" -r -sv TestRootCertificate.pvk TestRootCertificate.crl
Bundle auf .pfx (pvk2pfx.exe erfordert "Desktop-Entwicklung mit C++" für VS2017)
pvk2pfx.exe -pvk TestRootCertificate.pvk -pi {password} -spc TestRootCertificate.cer -pfx TestRootCertificate.pfx
makecert.exe -ic TestRootCertificate.cer -iv TestRootCertificate.pvk -pe -sv localtestclientcert.pvk -a sha1 -n "CN=localtestclientcert" -len 2048 -b 01/01/2015 -e 01/01/2030 -sky exchange localtestclientcert.cer -eku 1.3.6.1.5.5.7.3.2
Geben Sie Ihr Passwort ein.
pvk2pfx.exe -pvk localtestclientcert.pvk -pi {password} -spc localtestclientcert.cer -pfx localtestclientcert.pfx
Importieren Sie die Zertifikate.
Starten Sie mmc.exe.
File -> Add or Remove Snap-ins -> Certificates -> Add -> Computer account -> Local computer
Certificates (Local Computer) -> Personal -> Certificates -> Right click -> All tasks -> Import -> localtestclientcert.pfx
Certificates (Local Computer) -> Trusted Root Certification Authorities -> Certificates -> Right click -> All tasks -> Import -> RootCertificate.cer
Wird zur Authentifizierung in einem Browser verwendet:
File -> Add or Remove Snap-ins -> Certificates -> Add -> My user account
Certificates - Current User -> Personal -> Certificates -> Right click -> All tasks -> Import -> localtestclientcert.pfx
Für den Zugriff auf Ihre Site ist jetzt ein Client-Zertifikat erforderlich, dem der Server vertraut:
Wenn Sie diese Anleitung befolgt haben und eine Fehlermeldung erhalten, wie:
HTTP Error 500.19 - Internal Server Error
The requested page cannot be accessed because the related configuration data for the page is invalid.
Oder
HTTP Error 403.7 - Forbidden
The page you are attempting to access requires your browser to have a Secure Sockets Layer (SSL) client certificate that the Web server recognizes.
Möglicherweise müssen Sie Ihren Computer neu starten. Beachten Sie, dass es nicht ausreicht, iisexpress process oder Visual Studio zu schließen. Das 500.19
Kann ohne Neustart gelöst werden, aber Zertifikate sind schwierig. Daher wird empfohlen, den Computer neu zu starten.
Wenn Sie den Fehler The request was aborted: Could not create SSL/TLS secure channel
Erhalten, kann dies daran liegen, dass der Anwendungspool keinen Zugriff auf das bestimmte Zertifikat hat.
Zertifikate (lokaler Computer) -> Personal -> Zertifikate -> localtestclientcert -> Rechtsklick -> Alle Tasks -> Privaten Schlüssel verwalten -> IIS APPPOOL\YourWebSite
Hinzufügen und ihm die volle Kontrolle gewähren.