клиентские сертификаты в .NET - PullRequest
0 голосов
/ 05 июля 2011

Может кто-нибудь объяснить мне разницу между клиентскими сертификатами и общедоступными сертификатами, которые мы видим в SSL?

зачем нам нужен закрытый ключ в клиентских сертификатах?

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

помогите пожалуйста!

Ответы [ 3 ]

1 голос
/ 05 июля 2011

У меня есть сертификат клиента у которого нет закрытого ключа связанный с этим

Это противоречие в терминах. С каждым сертификатом связан закрытый ключ. Устанавливается на клиенте вместе с сертификатом. Он был сгенерирован до получения сертификата. Сам сертификат можно экспортировать, но это без личного ключа. Это делается, например, заставить сервер доверять клиенту, если сертификат клиента не подписан кем-то, кому сервер уже доверяет.

1 голос
/ 05 июля 2011

Сертификат клиента используется (как следует из его названия) для аутентификации клиента на сервере во время рукопожатия SSL / TLS. Чтобы любой сертификат использовался для аутентификации, аутентифицирующая сторона должна иметь закрытый ключ, который является доказательством подлинности (другими словами, тот, кто владеет секретным ключом, владеет заголовком). Следовательно, если вы используете какой-либо сертификат для аутентификации клиента, у вас должен быть соответствующий закрытый ключ. Закрытый ключ никогда не покидает клиентскую часть, он используется только в определенных криптографических реализациях.

Однако ваш вопрос сбивает с толку. На сервере вы обычно аутентифицируете сервер на клиенте и для этого используете сертификат сервера. Вы можете сказать серверу, что сертификат определенного клиента является доверенным, и клиент может аутентифицировать себя, используя этот сертификат, но для этого вам не нужен личный ключ клиента. Так что вы делаете что-то не так с IIS.

0 голосов
/ 09 июля 2011

Сертификат содержит открытый ключ пары ключей.Кто-то держит закрытый ключ пары ключей и хранит этот секрет.Он хранится отдельно от сертификата, если только вы не объедините их вместе для транспортировки, например, в файл PFX.

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

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

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

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