Сертификат клиента для транспортной привязки WCF NetTCP - PullRequest
2 голосов
/ 19 сентября 2011

У нас есть собственные службы WCF, работающие с использованием NetTCP: Транспорт: WindowsClientCredentialType

        // Set Binding Security.
        netTcpBinding.Security.Mode = SecurityMode.Transport;
        netTcpBinding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows;
        netTcpBinding.Security.Transport.ProtectionLevel = System.Net.Security.ProtectionLevel.EncryptAndSign;

Теперь нам нужно предоставить эти сервисы доменам за пределами нашего собственного, но мы хотим продолжать самохостинг и не использовать IIS. Поэтому я пытаюсь переключить нас на ClientCredentialType сертификата.

        // Set Binding Security.
        netTcpBinding.Security.Mode = SecurityMode.Transport;
        netTcpBinding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Certificate;
        netTcpBinding.Security.Transport.ProtectionLevel = System.Net.Security.ProtectionLevel.EncryptAndSign;

Ранее я уже настраивал среду разработки (давно), в которой мы использовали MakeCert для создания «фиктивного» сертификата для целей разработки с WCF. Но с тех пор мы приобрели сертификат у Verisign. Я немного размышляю о том, что должно произойти сейчас. Я вижу, как мы используем этот сертификат для проверки наших Услуг для Клиента, но как мы проверяем наш клиент .NET с помощью сертификата? Используем ли мы один и тот же сертификат? Нужно ли устанавливать этот сертификат во время установки нашего клиента? Бит обмотан вокруг оси и может использовать объяснение, может ли кто-нибудь помочь.

1 Ответ

4 голосов
/ 20 сентября 2011

Нет, вы не будете устанавливать свой сертификат с закрытым ключом на ваших клиентов.Вы не должны никому передавать свой закрытый ключ - как только он скомпрометирован, ваша безопасность исчезнет!Проблема заключается в том, что сертификат клиента также должен иметь закрытый ключ, но этот закрытый ключ должен принадлежать только одному клиенту.Это означает, что для каждого клиента требуется еще один сертификат.

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

...