5 Stimmen

Öffnen von Zertifikatsinformationen über die Webbrowser-Steuerung

Weiß jemand, wie man den Bildschirm "Zertifikatsinformationen" auf der Grundlage des SSL von der WebBrowser Kontrolle?

9voto

Yo Momma Punkte 8311

Dies kann durch die Verwendung einer Klasse namens X509Certificate2UI .

Um diese Klasse für Sie verfügbar zu machen, müssen Sie einen Verweis auf System.Security.dll

En el X509Certificate2UI Klasse haben Sie einen Meyhod namens DisplayCertificate() die eine X509Certificate2 Objekt als Parameter. Beim Aufruf dieser Methode wird ein Dialogfeld angezeigt, das alle Zertifizierungsinformationen einschließlich der Verkettung enthält, genau wie das Dialogfeld, das Sie im IE finden.

Das Webbrowser-Steuerelement kann nur eine X509Certificate die dann an den Konstruktor der X509Certificate2 Klasse.

Der Code sieht also wie folgt aus:

//includes on top
using System.Security;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;

//Do webrequest to get info on secure site
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://securesite.com");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
response.Close();

//retrieve the ssl cert and assign it to an X509Certificate object
X509Certificate cert = request.ServicePoint.Certificate;

//convert the X509Certificate to an X509Certificate2 object by passing it into the constructor
X509Certificate2 cert2 = new X509Certificate2(cert);

//display the cert dialog box
X509Certificate2UI.DisplayCertificate(cert2);

1voto

Oleg Punkte 219333

Wenn ich Sie richtig verstehe, sollten Sie nach diesen Informationen nicht in WebBrowser sondern innerhalb der CryptoAPI. Existiert eine solche Funktion wie CryptUIDlgSelectCertificateFromStore , CryptUIDlgViewContext de Cryptui.dll . Es gibt einige Funktionen in WINTRUST.DLL wie WinVerifyTrustEx die auch einige Dialoge anzeigen kann.

Könnten Sie genau beschreiben, wie ich den von Ihnen gewünschten Dialog in Internet Explore anzeigen kann? Arbeiten Sie bereits mit WebBrowser Kontrolle, dann können Sie zum Beispiel innerhalb von BeforeNavigate2 Eventuell die Url, die Internet Explorer hat. Mit dieser URL können Sie das SSL-Zertifikat herunterladen und anzeigen lassen, ob es in Bezug auf die CryptUIDlgViewContext . Zum Herunterladen oder Abrufen des Zertifikats können Sie InternetQueryOption mit dem Flag INTERNET_OPTION_SERVER_CERT_CHAIN_CONTEXT oder INTERNET_OPTION_CLIENT_CERT_CONTEXT verwenden. Es können die Informationen aus INTERNET_OPTION_SECURITY_CERTIFICATE, INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT, (siehe http://support.microsoft.com/kb/251347 ) wird für Sie ausreichen.

1voto

Keith Adler Punkte 20478

Es wird zwar nicht der .NET WebBrowser verwendet, aber Sie können diesen C#-Wrapper-Code ohne große Auswirkungen auf Ihr Projekt gegen den Standard-WebBrowser einsetzen:

http://code.google.com/p/csexwb2/

Sie brauchen dann nur noch zu sagen ShowCertificateDialog()

Es gibt keine andere Möglichkeit, ein ExecWB auszuführen oder diesen Dialog aufzurufen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X