Получить сертификат ssl в .net
Я ищу, чтобы получить данные от любого сертификата SSL домена. Например, я хочу указать любой адрес веб-сайта, например. "/qaru.site/...", и мой код сначала проверяет наличие сертификата SSL. Если это произойдет, я хочу, чтобы он вынул дату истечения срока действия сертификата. [Я читаю Domainnames из DB]
Пример: http://www.digicert.com/help/
Мне нужно создать веб-сервис, чтобы проверить дату истечения срока действия. как я могу это реализовать? - Я просмотрел множество различных вещей, таких как RequestCertificateValidationCallback и ClientCertificates и т.д.
Я мог бы быть совершенно прав (поэтому мне нужна помощь), но я бы создал HTTPWebRequest, а затем каким-то образом запросил сертификат клиента и конкретные элементы таким образом?
Я попробовал предоставленный пример @SSL-сертификат pre-fetch.NET, но я получаю ошибку 403.
Любая помощь будет высоко оценена - Спасибо.
Ответы
Ответ 1
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://mail.google.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);
string cn = cert2.GetIssuerName();
string cedate = cert2.GetExpirationDateString();
string cpub = cert2.GetPublicKeyString();
//display the cert dialog box
X509Certificate2UI.DisplayCertificate(cert2);
чтобы выполнить это, вам нужно добавить system.security в ссылку.
Ответ 2
Следует отметить, что вам может потребоваться установить request.AllowAutoRedirect = False
. В противном случае, если сервер перенаправляет HTTPS на HTTP, вы не сможете получить сертификат из объекта HttpWebRequest
.