Открыть информацию о сертификате из веб-браузера - PullRequest
4 голосов
/ 22 апреля 2010

Кто-нибудь знает, как открыть экран «Информация о сертификате» на основе SSL из элемента управления WebBrowser?

Ответы [ 3 ]

8 голосов
/ 31 мая 2010

Этого можно достичь с помощью класса X509Certificate2UI.

Чтобы сделать этот класс доступным для вас, вам нужно добавить ссылку на System.Security.dll

В классе X509Certificate2UI у вас есть meyhod с именем DisplayCertificate(), который принимает объект X509Certificate2 в качестве параметра. При вызове этот метод показывает диалоговое окно, отображающее всю информацию о сертификате, включая цепочки, точно такое же, как диалоговое окно, которое вы найдете в IE.

Элемент управления веб-браузера может возвращать только X509Certificate, который затем может быть передан в конструктор класса X509Certificate2.

Итак, код выглядит так:

//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);
1 голос
/ 06 мая 2010

Хотя он не использует .NET WebBrowser, вы можете использовать этот код оболочки C # в сравнении со стандартным WebBrowser без особого влияния на ваш проект:

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

Затем вам потребуется только сказать ShowCertificateDialog()

Нет способа создать ExecWB или вызвать этот диалог в противном случае.

1 голос
/ 02 мая 2010

Если я правильно вас понял, вы должны искать эту информацию не в WebBrowser, а внутри CryptoAPI. Существуют такие функции, как CryptUIDlgSelectCertificateFromStore, CryptUIDlgViewContext из Cryptui.dll . В WINTRUST.DLL есть некоторые функции, такие как WinVerifyTrustEx, которые также могут отображать некоторые диалоговые окна.

Не могли бы вы точно описать, как я могу отображать диалог, что вы хотите в Internet Explore? Если вы уже работаете с WebBrowser control, то вы можете отследить, например, внутри BeforeNavigate2 Event URL, который имеет Internet Explorer. Имея этот URL, вы можете скачать сертификат SSL на дисплей, если в отношении CryptUIDlgViewContext. Чтобы загрузить или получить сертификат, вы можете использовать InternetQueryOption с флагом INTERNET_OPTION_SERVER_CERT_CHAIN_CONTEXT или INTERNET_OPTION_CLIENT_CERT_CONTEXT. Это может быть информация из INTERNET_OPTION_SECURITY_CERTIFICATE, INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT, (см. http://support.microsoft.com/kb/251347) для вас будет достаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...