Я искал правильный способ защитить службу WCF, которая размещена в службе Windows и в приложении WPF Desktop соответственно (2 службы).
Я перепробовал так много примеров и образцов и прочитал, так что могут быть разные способы делать что-то, что теперь я настолько сбит с толку, что понятия не имею, что делать.
В ореховой скорлупе - вот сценарий ...
У меня есть служба Windows, которая позволяет клиентским приложениям подключаться к ней в корпоративной сети.
Все коммуникации здесь находятся за корпоративным брандмауэром. Никаких публичных выступлений.
Теперь - мне удалось заставить все работать нормально, используя basichttpBinding, на котором включена проверка подлинности Windows.
Проблема в том, что мне нужно передавать все безопасно - без использования http.
Итак - я подумал, что будет относительно простой задачей просто сгенерировать сертификат (не обязательно быть коммерческим сертификатом - подойдет только сертификат разработчика с использованием MakeCert), и я могу загрузить этот сертификат из файла и защитить трафик с помощью этого - о как я был неправ !! Это непросто из того, что я прочитал.
Для сравнения - существует 100 серверов, на каждом из которых работает служба, и к этой службе будут подключаться более 500 клиентов для настольных ПК. При необходимости с каждым клиентом можно связаться с любого из 100 серверов.
Кроме того, серверам разрешено связываться друг с другом, если они того требуют, и они это делают регулярно.
Создание 600+ сертификатов и загрузка их в репозиторий сертификатов каждой машины на самом деле не вариант - и можете ли вы представить себе обновления через год или два ...
Я надеялся создать файл сертификата для сервера и один для клиента и распространить файл сертификата с каждым экземпляром сервера или клиентского приложения соответственно. Когда клиент или сервер запускается и открывает свой узел службы WCF, он будет использовать сертификат на своем пути для шифрования трафика. Я собирался отключить все проверки отзыва, так как это будут сертификаты из ненадежных источников, но, как я уже упоминал, это было нормально.
Пока - мне совершенно не удалось найти, как это сделать - на самом деле - теперь я не уверен, какой правильный способ сделать это и был ли мой подход с использованием basichttpbinding правильным.
Я также пробовал пойти по пути net.tcp вместо http, но я не мог заставить генератор справочников службы Visual Studio найти службу - или, если он это делал, это всегда выходило из строя с ошибками.
Учитывая сценарий, который я описал выше, не мог бы кто-нибудь подсказать мне, как правильно установить шифрованную связь между сервером и клиентом (и наоборот). Могу ли я внести несколько небольших изменений в мои basicHttpBindings, чтобы включить ssl, используя мои одиночные серверные или клиентские сертификаты, или я продвигаю пресловутую! ^ & #% В гору?
Мы будем приветствовать любые советы или ссылку на руководство, которое может соответствовать описанному мной сценарию, чтобы я мог отсортировать его.
Любая помощь приветствуется
С уважением
Стержень.