Weiß jemand, wie man den Bildschirm "Zertifikatsinformationen" auf der Grundlage des SSL von der WebBrowser
Kontrolle?
Antworten
Zu viele Anzeigen?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);
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.
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.