На самом деле сертификаты - это действительно путь! Я настоятельно советую вам использовать сертификаты! Это не так сложно. На самом деле это ваша проблема: «домены не доверяют друг другу». С сертификатами вы получите домены, которые доверяют друг другу.
Вот пошаговая инструкция, как это сделать:
1) Вы должны создать сертификат на клиенте. Для этого перейдите в меню «Пуск» -> «Выполнить» -> введите «cmd» и нажмите Enter
В окне консоли введите:
makecert.exe MakeCert -pe -ss My -sr LocalMachine -a sha1 -sky exchange -n CN = ClientCertificateName (измените "ClientCertificateName" на выбранное вами имя)
2) сделать то же самое на сервере, меняя имя сертификата!
3) после выполнения шагов 1) и 2) на вашем клиенте и на сервере установлены свои самозаверяющие сертификаты. Теперь вам нужно экспортировать эти сертификаты и импортировать сертификат клиента в папку TrustedPeople сервера и импортировать сертификат сервера в папку TrustedPeople клиента.
Для этого -> меню «Пуск» -> «Выполнить» -> введите «mmc» и нажмите Enter.
4) Чтобы открыть хранилище сертификатов, перейдите в «Файл» -> «Добавить / удалить оснастку» -> в новом окне выберите «Сертификаты» (слева) и нажмите «Добавить» -> «ОК» -> «Учетная запись компьютера» -> Далее -> Готово -> ОК
После этого откроется консоль сертификатов. Разверните узел сертификатов (слева) и перейдите к узлу Личные / Сертификаты. Там вы найдете сертификат, только что созданный в предыдущих шагах. Щелкните правой кнопкой мыши сертификат и экспортируйте его, включая закрытый ключ. Сохраните экспортированный сертификат в файл. Затем скопируйте этот файл на другой компьютер и импортируйте его в узел «Доверенные люди / сертификаты».
5) Повторите шаг 4) и для другой машины - конечная цель - импортировать сертификат Клиента на машину хоста и наоборот
Теперь, когда вы (надеюсь) настроили сертификаты, вы должны сообщить службе об их использовании. Для этого вы можете использовать файл web.config (app.config) вашего приложения или написать код.
<security mode="Message">
<message clientCredentialType="Certificate" />
</security>
После добавления узла безопасности как в файл конфигурации клиента, так и в файл сервера, вы должны добавить следующее поведение к вашей привязке:
<behaviors >
<endpointBehaviors>
<behavior name="your_binding_behavior">
<clientCredentials>
<clientCertificate findValue="[The name of the client certificate here]"
storeLocation="LocalMachine"
storeName="My"
x509FindType="FindBySubjectName"/>
<serviceCertificate>
<defaultCertificate findValue="[The name of the server certificate here]"
storeLocation="LocalMachine"
storeName="TrustedPeople"
x509FindType="FindBySubjectName"/>
<authentication certificateValidationMode="PeerOrChainTrust"/>
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
И это все! Тебе хорошо идти! Для получения дополнительной информации об этом вы можете прочитать эту статью . А вот еще более подробный .
НТН