Служба WCF - сертификаты и безопасность сообщений с аутентификацией UserName - PullRequest
15 голосов
/ 13 января 2011

Я готовлюсь к созданию службы WCF, которую наши клиенты могут использовать для обновления данных в нашей системе.Так что это должно быть доступно через Интернет.У меня есть книга о WCF, из которой я знаю, что Message Security - это путь, когда служба WCF доступна через Интернет.Это потому, что вы не должны использовать транспортную безопасность, потому что она должна использоваться только в средах, где вы можете гарантировать, что существует соединение точка-точка между сервисом и клиентом.Я правильно понял?Поэтому я хочу использовать Message Security в сочетании с пользовательской UserName аутентификацией.Я понимаю, что мне нужно получить сертификат для этого.Наша компания уже имеет сертификат SSL, который используется для наших веб-сайтов.

  • Могу ли я использовать этот же сертификат для защиты сообщений службы WCF?

И

  • Совместим ли способ защиты сообщений с клиентами, ожидающими веб-службы ASMX?

Для тестирования я создал собственный сертификатс Makecert.Это работало нормально, но мне всегда приходилось добавлять сертификат к Trusted Persons на клиентском компьютере.

  • Можно ли включить Message Security с указанным выше сертификатом, не форсируяклиент для добавления сертификата в Trusted Persons вручную?

Теперь давайте предположим следующий сценарий:

Company Infrastructure

Есть дваВеб-серверы за ISA-сервером / брандмауэром.Этот ISA-сервер содержит сертификат для адреса www.company.com.Таким образом, все вещи SSL обрабатываются им.Он также перенаправляет входящие запросы на веб-серверы соответственно.Недавно созданная служба WCF должна работать на втором веб-сервере.

  • Нужно ли копировать сертификат на веб-сервер, чтобы иметь возможность использовать Message Security?

Если да, то я слышал, что копирование сертификатов не является хорошей практикой, поскольку снижает уровень безопасности.Перенос сертификата на веб-сервер невозможен, поскольку он необходим и для веб-сайтов на веб-сервере1.

  • Какие у меня варианты в этом случае?

И:

  • Что было бы лучшим вариантом для этого сценария, независимо от заданных требований?

Спасибо...

1 Ответ

12 голосов
/ 13 января 2011

Красиво подготовленный вопрос.Прежде всего, я, вероятно, прочитал ту же книгу и хотел бы уточнить это утверждение:

Это потому, что вы не должны использовать транспортную безопасность, потому что она должна использоваться только в средах, где вы можете гарантироватьчто между сервисом и клиентом существует соединение точка-точка.

Да.HTTPS (транспортная безопасность) предлагает только двухточечную безопасность, но сотрудники IMO неправильно понимают этот сценарий.Считаете ли вы, что если вы подключитесь к своему интернет-банкингу через HTTP, это будет случайным образом где-то посередине обмена Интернет-обменом с HTTPS на HTTP?НЕТ!Двухточечное соединение означает защищенный транспортный канал между клиентом и доступным шлюзом, предоставляющий запрошенный URL.В вашем сценарии это означает защищенный транспортный канал между Клиентом и вашим ISA-сервером.Связь не будет защищена между вашим ISA и веб-сервером 2. Если вы хотите использовать сквозную связь, которая обеспечит безопасный канал между клиентом и веб-сервером 2 (ISA не сможет перехватывать сообщения), вам нужна безопасность сообщений.

Теперь к другим вашим вопросам:

Могу ли я использовать тот же сертификат для защиты сообщений службы WCF?

Да, можно, но у вас естьскопировать закрытый ключ на ваш веб-сервер 2.

Способ защиты сообщений совместим с клиентами, которые ожидают ASMX Webservice?

Нет.Чистый клиент ASMX не может использовать защиту сообщений, если вы не кодируете много пользовательских заголовков и расширений SOAP или не устанавливаете WSE 3.0.

Возможно ли включить защиту сообщений с помощью вышеупомянутого сертификата без принудительногоклиент для добавления сертификата доверенным лицам вручную?

Да, но центр сертификации, опубликовавший сертификат, должен быть доверенным на клиентском компьютере.То же самое с HTTPS.Службы, защищенные защитой сообщений, также могут выставлять отпечаток сертификата внутри WSDL.С помощью этого отпечатка клиенты могут подтвердить подлинность услуги.Я думаю, что в таком случае вам также не нужно устанавливать сертификат на клиенте, но по истечении срока действия сертификата все клиенты должны будут обновляться.

Нужно ли копировать сертификат на веб-сервер, чтобыУмеете использовать Message Security?

Да, вы должны.Но это может быть проблемой, потому что по соображениям безопасности сертификат может быть помечен как не экспортируемый.Лучшее решение - запросить новый сертификат только для этой цели.

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