Используя серверные переменные (Request.ServerVariables["CERT_SERVER_ISSUER"]), я могу получить строку, представляющую эмитента сертификата сервера, используемого в соединении.
Я хотел бы получить доступ к фактическому сертификату (X509Certificate, если это возможно), чтобы я мог дополнительно проверить сертификат.
Я хочу проверить сертификат сервера в своем коде ASP.NET, чтобы убедиться, что никто просто не нажал «.. все равно продолжить». В частности, я хочу проверить CA Root.
Как я понимаю - обычно браузеры не представляют сертификат клиента - так что:
HttpContext.Current.Request.ClientCertificate
будет нулевым/пустым... Я ищу Сертификат сервера и, если возможно, полную цепочку сертификата сервера, чтобы проверить корневой центр сертификации.





Вы можете получить сертификаты из хранилища сертификатов, вы можете сделать это по имени субъекта, отпечатку пальца или как-то еще, если хотите. Вам нужно будет определить, какие из них у вас есть, и изменить «тип поиска» в этом примере:
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();
Вы можете использовать переменные сервера
HTTPS_SERVER_ISSUERиHTTPS_SERVER_SUBJECT, чтобы найти сертификат docs.microsoft.com/en-us/previous-versions/iis/6.0-sdk/….