简体   繁体   中英

Open Certificate Information from Web Browser Control

有谁知道如何根据WebBrowser控件中的SSL打开“证书信息”屏幕?

This can be achieved by using a class called X509Certificate2UI .

To make this class avalable to you, you need to add a reference to System.Security.dll

In the X509Certificate2UI class you have a meyhod called DisplayCertificate() which takes an X509Certificate2 object as a parameter. When invoked, this method shows a dialog box displaying all cert information including chaining, exactly the same as the dialog box you will find in IE.

The webbrowser control can only return a X509Certificate which can then be passed into the constructor of the X509Certificate2 class.

So the code looks as such:

//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);

If I understand you correct you should search for this information not in WebBrowser but inside of CryptoAPI. Exist such function like CryptUIDlgSelectCertificateFromStore , CryptUIDlgViewContext from Cryptui.dll . There are some functions in WINTRUST.DLL like WinVerifyTrustEx which can also display some dialogs.

Could you exactly describe how I can display dialog what you want in Internet Explore? Do you works already with WebBrowser control, then you can trace, for example, inside of BeforeNavigate2 Event the url which Internet Explorer has. Having this URL you can download SSL certificate an display if with respect of CryptUIDlgViewContext . To download or get the certificate you can use InternetQueryOption with INTERNET_OPTION_SERVER_CERT_CHAIN_CONTEXT or INTERNET_OPTION_CLIENT_CERT_CONTEXT flag. It can be that information from INTERNET_OPTION_SECURITY_CERTIFICATE, INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT, (see http://support.microsoft.com/kb/251347 ) will be enough for you.

While it's not using the .NET WebBrowser, you could leverage this C# wrapper code against the standard WebBrowser without much impact on your project:

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

It will then require you only to say ShowCertificateDialog()

There is no way to do an ExecWB or invoke that dialog otherwise.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM