2015-04-01 3 views
1

У поставщика сертификатов StartSSL, когда вы регистрируетесь, вы вводите свой адрес электронной почты и пароль. Они создают сертификат (.pfx), который необходимо загрузить и установить в свой браузер.Как проверить подлинность пользователя на основе сертификата?

В комментариях указывалось, что это сертификат клиента.

Таким образом, при нажатии кнопки входа в систему, например, в Chrome появляется всплывающее окно и запрашивается, какой сертификат использовать. Я мог бы иметь несколько клиентских сертификатов и входить в отдельные учетные записи на основе того, что я выбираю. Они предупреждают, что если вы потеряете сертификат, вы не сможете войти на сайт без восстановления нового сертификата.

Я хотел бы сделать это с помощью C#. Я хотел бы сгенерировать клиентский сертификат, а затем использовать его позже для входа в систему как администратора без ввода пароля.

Что это за механика? Как создать сертификаты и использовать их для входа на мой сайт? Я хотел бы сделать это на сайте MVC C#. Я не возражаю, если мне нужно создавать самоподписанные сертификаты, это только для моего собственного использования. По крайней мере, он избавляется от форм паролей и нападений грубой силы.

+0

Сертификат на стороне сервера не аутентифицирует пользователя, это сертификат на стороне клиента. Ваш вопрос неясно, о каких сертификатах вы говорите. – Dai

+0

Сервер ssl cert аутентифицирует ваш сервер для пользователя, а не наоборот. Это тот же самый тип сертификата, который (скажем) amazon.com использует, чтобы доказать, что сайт, который вы просматриваете в своем браузере, действительно является амазоном. –

+0

Потому что я не уверен, как это делается. Как это может быть сертификат на стороне клиента? Что происходит, как сайт запрашивает сертификат? И какая информация отправляет клиент на сервер? Отпечаток пальца? Код? Я не понимаю. – ppumkin

ответ

3

Это довольно просто, требование сертификата - это опция подтверждения SSL.

Прежде всего вам нужно перейти к параметрам SSL в IIS и проверить возможность приема, а требует сертификатов. Этого достаточно, чтобы браузеры автоматически открывали окно выбора сертификатов, и связь взаимно защищена как сертификатами сервера, так и клиентом.

https://technet.microsoft.com/pl-pl/library/cc753983%28v=ws.10%29.aspx

Затем идет трубопровод запроса. Вам либо нужен httpmodule, либо вы просто предоставляете обработчик для события AuthenticateRequest глобального приложения. Там, вы обратитесь к Request.ClientCertificate

https://msdn.microsoft.com/en-us/library/ms524668%28v=vs.90%29.aspx

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

+0

Спасибо Wiktor. Как я могу сгенерировать сертификаты.У меня есть закрытый ключ верхнего SSL-сертификата или он не имеет ничего общего с созданием клиентских сертификатов? – ppumkin

+1

Клиентские сертификаты не имеют ничего общего с сертификатами сервера ssl. Вы можете создавать сертификаты любым возможным способом, даже вручную с помощью makecert, или вы можете просто попросить своих клиентов использовать свои сертификаты, которые у них уже есть. Единственным важным элементом является сопоставление отпечатков cert от реальных пользователей. –

Смежные вопросы