2014-02-18 4 views
1

У меня есть проект консольного приложения .NET, который использует службу WCF. Чтобы использовать услугу, приложение должно предоставить несколько цифровых сертификатов.Включая сертификаты с проектом

До сих пор я запускал это приложение с моей локальной машины, поэтому приложение смогло вытащить сертификаты из моей локальной файловой системы. Тем не менее, в настоящее время я заинтересован в развертывании приложения для нескольких других компьютеров.

Каков правильный способ включения этих сертификатов в проект? В частности, имеет смысл хранить сертификаты в файлах resource?

ответ

0

Это интересно для меня; Я займусь тем же вопросом через несколько месяцев в своем собственном проекте.

Я бы сказал, что большая часть ответа будет зависеть от того, как вы планируете управлять сертификатами. Должны ли они быть обновлены как часть регулярного поворота ключа (т. Е. Это для чего-то другого, кроме приложения для интрасети низкого риска)? Поскольку вы уже используете цифровые сертификаты, моя догадка заключается в том, что приложение имеет дело с высокоценными данными и либо не работает в интрасети, либо служба является внешней для вашей интрасети (в противном случае вы должны использовать встроенную проверку подлинности Windows с помощью службы) - в любом случае, похоже, вам придется регулярно обновлять свои сертификаты (возможно, ежегодно).

Итак, ключевой вопрос для вас, я думаю, заключается в следующем: если сертификаты должны быть обновлены, вы хотите сделать это через перераспределение приложения?

Возможно, вы можете включить сертификат в файл ресурсов. Вы также можете связать их в пакете MSI, который вы создаете с помощью WiX (выкрикивайте один из самых крутых проектов OSS, которые я видел :)). Но если вы собираетесь обновлять сертификаты за пределами графика развертывания приложений, ни один из этих подходов не имеет смысла.

В этом случае вы, вероятно, захотите подумать о отдельном скрипте/мини-установщике/службе, который просто существует для обновления сертификатов. PowerShell может быть самым простым способом решения этой проблемы - особенно если приложение работает только в вашей интрасети (имеется множество инструментов для автоматического запуска сценариев PowerShell на удаленных компьютерах).

Да, в общем, я бы сказал, что скачайте сценарий PowerShell для развертывания сертификата. Затем вам просто нужно закодировать приложение, чтобы иметь возможность обрабатывать изменения в сертификате (например, я не думаю, что вы сможете полагаться на отпечаток пальца для чего-то вроде поиска сертификата в хранилище сертификатов). Если вы просто загружаете сертификат из файла, это даже не проблема.