Пожалуйста, объясните понятие клиентских сертификатов в WCF - PullRequest
3 голосов
/ 21 февраля 2011

Я немного новичок в WCF и веб-безопасности, поэтому я очень ценю четкое объяснение следующих концепций:

Я понимаю, что если я хочу создать безопасное соединение с веб-сайтом, мне нужно иметь сертификат SSL от доверенного органа, например, Verisign, Thawte и т. Д.

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

Но WCF теперь поставляется с этой концепцией «сертификата на стороне клиента», которая, как представляется, требуется для проверки моего сертификата на стороне сервера, и которую я полностью не понимаю. Клиент будет загружен каким-то анонимным парнем по всему миру. Я понятия не имею, какие сертификаты он установит или не установит - и мне все равно! Все, что я хочу, это чтобы связь между клиентом и сервером была безопасной. Должен ли я как-то установить свой собственный сертификат на клиенте?

Может кто-нибудь объяснить мне эти понятия?

(И пока вы занимаетесь этим, у меня есть связанный вопрос здесь с наградой.)

Ответы [ 2 ]

2 голосов
/ 21 февраля 2011

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

Сертификаты клиента вступают в игру, когда сервер хочет пройти проверку подлинностиличность клиента более безопасным способом, чем использование паролей.SSL / TLS (включая HTTPS, который является просто HTTP поверх SSL / TLS) действительно поддерживает клиентские сертификаты, и его часто называют «двусторонний SSL» или «SSL с аутентификацией клиента».Все основные браузеры поддерживают это, также как и клиенты WCF, но, как я уже говорил ранее, это не требуется (если сервер явно не требует этого).

2 голосов
/ 21 февраля 2011

Я думаю, что вы объединяете две разные вещи.SSL основан на асимметричном шифровании, которое работает с двумя разными ключами - открытым ключом и закрытым ключом.Шифрование работает таким образом, что любой может использовать открытый ключ для шифрования данных, но только владелец личного ключа может расшифровать данные.Когда вы устанавливаете сервисный сертификат на вашем сервере, вы должны установить сертификат, который содержит оба ключа, но вашим клиентам нужен сертификат, который содержит открытый ключ (иначе они не смогут зашифровать сообщения для вашей службы) => Клиент должен иметь доступ к сертификату с открытым ключом,При использовании доверенного центра сертификации это не должно быть проблемой, поскольку SSL (по крайней мере, HTTPS) должен обмениваться этим сертификатом во время первоначального рукопожатия.

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

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