wake-up-neo.com

Wie erstelle ich Client-Zertifikate zum lokalen Testen der bidirektionalen Authentifizierung über SSL?

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?

23
indra

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!

4
NSjonas

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.

enter image description here

Neue Zertifikate erstellen:

Starten Sie die VS Developer-Eingabeaufforderung

Stammzertifikat:

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

Client-Zertifikat vom Root-Zertifikat:

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:

enter image description here

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.

1
Ogglas