Как настроить в Azure веб-службу asmx, которая принимает сертификат клиента? - PullRequest
1 голос
/ 04 декабря 2011

Заранее извиняюсь, если вопрос смешной.

У меня есть служба 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?

В любом случае это даже правильный способ проверки подлинности сертификата?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 04 декабря 2011

Вы можете использовать командные сценарии для изменения IIS в сочетании с appcmd.exe.

Для быстрого примера (отключение тайм-аута в пуле приложений) взгляните на этот образец от Стива Маркса.

В этом примере вы бы вызвали DisableTimeout.cmd в качестве задачи запуска. Для получения дополнительной информации о создании задач запуска вы можете посмотреть этот эпизод Cloud Cover Show. В учебном комплекте Pl atform должна быть лаборатория по задачам запуска.

Просто помните, что любое изменение конфигурации IIS должно выполняться с помощью автоматизированной задачи при запуске. Если вы вручную измените IIS через RDP, эти изменения не распространятся на все ваши экземпляры и не будут сохраняться в случае сбоя оборудования или обновления ОС.

0 голосов
/ 04 декабря 2011

Вы можете удаленно подключиться к своим экземплярам Azure для управления IIS. Что касается способа сделать это глобально для всех случаев одновременно, я не уверен. Это был бы интересный побочный проект.

http://learn.iis.net/page.aspx/979/managing-iis-on-windows-azure-via-remote-desktop/

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