2016-05-26 4 views
5

Я развернул веб-приложение в качестве веб-приложения в Azure App Service. Я загрузил несколько сертификатов на Azure Portal, поскольку веб-приложение работает через SSL, и мы используем другой сертификат для выполнения некоторых расшифровки.Сертификат не найден на Azure Web App

В последнем случае у меня есть метод (который отлично работает локально), чтобы найти сертификат:

public static X509Certificate2 FindCertificate(KnownCertificate certificate) 
    { 
     return FindCertificate(StoreName.My, StoreLocation.CurrentUser, X509FindType.FindByThumbprint, certificate.Thumbprint); 
    } 

Но я получаю сообщение об ошибке, что сертификат с отпечатком XYZ не найден. Хотя, на Лазурном портале он присутствует. (Я загрузил и импортировал его)

Я использую StoreLocation.CurrentUser, как предложено в THIS POST, но он по-прежнему не работает. Я использую неправильный магазин или что еще мне не хватает?

EDIT: Мне удалось remotetly отлаживать WebAPP и с ImmediateWindow особенностью VisualStudio Я выполнил этот код

new X509Store(StoreName.CertificateAuthority, StoreLocation.CurrentUser).Certificates.Find(findType, findValue, false).Count; 

тестирование всех возможных комбинаций StoreNames и StoreLocations, но безрезультатно.

Возможно ли, как заявлено here, что для использования сертификата с целями, отличными от трафика https, вам понадобится облачная служба и что (я полагаю, что) службы App не поддерживают его?

+0

Для любого, у кого есть аналогичная проблема - не нужно это делать - «тестирование всех возможных комбинаций», когда вы загружаете сертификат в службу приложений Azure, он всегда идет в StoreName.My, Store Location.CurrentUser. – Dhanuka777

ответ

9

Вам необходимо добавить WEBSITE_LOAD_CERTIFICATES в настройки приложения для вашего веб-приложения. Задайте значение либо «*», либо отпечаток вашего сертификата, который вы хотите загрузить в среду веб-приложения. Мое личное предпочтение заключается в том, чтобы установить это значение в «*», что означает, загрузить все загруженные сертификаты.

enter image description here

После установки этого изменения, вы должны быть в состоянии загрузить сертификат из вашего кода веб-приложения.

Дополнительная информация об использовании сертификатов доступна here. Статья немного устарела (по современным стандартам), но все еще актуальна.

+0

Thanx Rick Да, в конце концов, вчера вечером я решил это сам, но еще не обновил ответ. Что сложно, так это то, что я впервые добавил эту настройку в Web.config, и это не сработало, и только добавление ее с портала сделало трюк. –

+0

Я пробовал это, все еще не работая, должен ли сертификат подписаться ЦС? или это может быть самоподписанный сертификат? – MBen

+0

Самозапись будет работать точно так же. Фактически, это то, что я использовал в ответе выше. Будьте осторожны, копируя отпечаток сертификата, чтобы избежать копирования скрытых символов. Например, скопируйте/вставьте отпечаток в блокнот, а затем скопируйте из блокнота и вставьте в настройки своего приложения. –