Как обезопасить службу WCF, не размещенную в IIS - PullRequest
0 голосов
/ 11 сентября 2011

Я искал правильный способ защитить службу WCF, которая размещена в службе Windows и в приложении WPF Desktop соответственно (2 службы).

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

В скорлупе ореха - вот сценарий ...

У меня есть окнасервис, который позволяет клиентским приложениям подключаться к нему по корпоративной сети.

Все коммуникации здесь осуществляются за корпоративным брандмауэром.Ничего общедоступного.

Теперь - мне удалось заставить все работать нормально, используя basichttpBinding, на котором включена проверка подлинности Windows.

Проблема в том, что мне нужно передавать все безопасно - без использования http.

Итак, я подумал, что будет довольно простой задачей - просто сгенерировать сертификат (не обязательно должен быть коммерческим сертификатом - просто сертификат dev с использованием MakeCert), и я могу загрузить этот сертификат из файла изащитите трафик этим - о, как я ошибался !!Это непросто из того, что я прочитал.

Для сравнения: на каждом сервере работает 100 серверов, и к этой службе могут обращаться более 500 настольных клиентов.При необходимости с каждым клиентом может связаться любой из 100 серверов.

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

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

То, что я надеялся сделать, - это создать файл сертификата для сервера - и один для клиента, ираспределите файл сертификата с каждым экземпляром серверного или клиентского приложения соответственно.Когда клиент или сервер запускается и открывает свой узел службы WCF - он использует сертификат в своем пути для шифрования трафика.Я собирался отключить все проверки отзыва, так как это будут сертификаты из ненадежных источников - но, как я уже говорил, это было нормально.

До сих пор - мне совершенно не повезло найти способ сделать это - на самом деле - яЯ не уверен, что сейчас это правильный способ сделать это, и если мой подход с использованием basichttpbinding был правильным.

Я также попытался пойти по пути net.tcp вместо http - но я не смог получить Visual StudioГенератор справочников услуг, чтобы найти сервис - или если он делал это, он всегда терпел неудачу с ошибками.

Учитывая сценарий, который я обрисовал в общих чертах выше, - может кто-нибудь подсказать, пожалуйста, правильный способ получения зашифрованных соединений между сервером и клиентом (и наоборот).Могу ли я сделать несколько небольших изменений в моих базовых HttpBindings, чтобы включить ssl, используя сертификаты моего отдельного Сервера или Клиента, или я подталкиваю общеизвестно! ^ & #% В гору?

Любой совет будет приветствоваться или ссылкак руководству, которое может соответствовать сценарию, который я описал, чтобы я мог его отсортировать.

Любая помощь приветствуется

С уважением

Удочка.

1 Ответ

1 голос
/ 11 сентября 2011

О чем ты говоришь? У вас есть 100 серверов в корпоративной сети с 500 настольными компьютерами, и у вас нет внутреннего центра сертификации, которому доверяют все эти машины? В корпоративной сети с Active Directory это должно быть просто легкой задачей, потому что у каждой машины, скорее всего, уже есть свой собственный сертификат, и если нет, он может запросить сертификат у локального центра сертификации Active Directory, и он просто получит его без необходимости вручную манипулировать сертификат. Он также может обрабатывать продление сертификата. Вам нужно только назначить этот сертификат для исправления порта на каждой машине с помощью netsh - я полагаю, что это можно как-то автоматизировать. Вопросы о том, как использовать корпоративный CA, AD или автоматизировать назначение сертификатов в корпоративной сети, относятся к Ошибка сервера .

Говорить о безопасности и в то же время распространять один и тот же сертификат с закрытым ключом на 600 машин - нонсенс. Любая машина сможет расшифровать трафик, предназначенный для любой другой машины, - это то же самое, что отправка данных в base64 через HTTP и назвать это защитой.

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