#c# #server #certificate
#c# #сервер #сертификат
Вопрос:
Используя серверные переменные ( Request.ServerVariables["CERT_SERVER_ISSUER"]
), я могу получить строку, представляющую эмитента сертификата сервера, используемого в соединении.
Я хотел бы получить доступ к фактическому сертификату ( X509Certificate
если это возможно), чтобы я мог дополнительно проверить сертификат.
Я хочу проверить сертификат сервера в моем ASP.NET код, чтобы убедиться, что никто просто не нажал «.. продолжить в любом случае». В частности, я хочу проверить корневой центр сертификации.
Насколько я понимаю — обычно браузеры не представляют сертификат клиента — так:
HttpContext.Current.Request.ClientCertificate
будет нулевым / пустым… Я ищу сертификат сервера и, если возможно, полную цепочку сертификатов сервера, чтобы я мог проверить корневой центр сертификации.
Ответ №1:
Вы можете получить сертификаты из хранилища сертификатов, вы можете сделать это по имени субъекта, отпечатку пальца или чему-то еще, если хотите. Вам нужно будет определить, какой из них у вас есть в наличии, и изменить «тип поиска» в этом примере:
X509Store store = new X509Store(StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certs = store.Certificates.Find(X509FindType.FindBySubjectName, "Subject Name", false);
if (certs.Count > 0)
{
// do something with: certs[0];
};
store.Close();
Комментарии:
1. Вы можете использовать переменные сервера
HTTPS_SERVER_ISSUER
иHTTPS_SERVER_SUBJECT
для поиска сертификата learn.microsoft.com/en-us/previous-versions/iis/6.0-sdk /…