Заранее извиняюсь, если вопрос смешной.
У меня есть служба asmx, работающая в Azure (HTTP - без SSL).
У меня есть приложение WPF, которое загружает X509Certificate2 и добавляет его к запросу, выполнив следующие действия:
X509Certificate2 cert = new X509Certificate2("...");
webRequest.ClientCertificates.Add(cert);
В веб-службе я получаю сертификат по
new X509Certificate2(this.Context.Request.ClientCertificate.Certificate)
И затем я загружаю сертификат (который я одновременно загрузил на панель управления Azure и добавил в файл определения службы), используя следующий пример:
var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
X509Certificate2Collection certs = store.Certificates.Find(X509FindType.FindBySubjectName, certName, true);
И затем я проверяю, выполняяследующее:
clientCert.Thumbprint == certs[0].Thumbprint
Теперь, к сожалению, я получаю исключение ( System.Security.Cryptography.CryptographicException: m_safeCertContext - недопустимый дескриптор ), как только я сделаю
Request.ClientCertificate.Certificate
Итак, у меня есть несколько вопросов.Как мне избежать исключения. В этом ответе говорится, что мне нужно изменить настройку IIS, но как я могу это сделать в Azure?
В любом случае это даже правильный способ проверки подлинности сертификата?
Спасибо!