Я не согласен с данным ответом. Чтобы понять сертификаты, вы должны понимать инфраструктуру, лежащую за ней (PKI, инфраструктура открытых ключей). Это означает, что вы должны прочитать некоторые материалы о первой
- Как открытый ключ шифрования работы (в целом)
- Почему ПКИ нужны
- Что такое сертификат и почему он нужен
Программирование этого материала не имеет смысла, если вы не знаете концепций, стоящих за ним.
Вы сравниваете его с шифрованием/расшифровкой.Оба являются черными ящиками, где пользователь не необходимо знать как он работает (внутренне), чтобы использовать его.
Однако сертификаты и PKI отличаются. чтобы вы могли использовать их в практическом и в основном безопасном виде, вам нужно сначала понять концепции (читая, но не бойтесь читать несколько страниц вики и задавать несколько вопросов здесь, вы получите больше, чем на полпути), прежде чем вы можете запрограммировать его.
Редактировать после комментария: Да, игрушечные программы всегда приятно воспринимать концепцию на практике. Что приходит на ум:
- сделать публичный шифровать ключ/дешифрования (базовый)
- Do подпись/проверить подпись (я знаю, что это то же самое, что и предыдущий, но он принципиально отличается) (базовый)
- Попытки подключиться к серверу и сделать SSL рукопожатие себя (продвинутого)
- Попробуйте подключиться к серверу, получать сертификат и проверить действительность через всю цепочку сертификатов (умеренную)
- Попробуйте создать свой собственные самоподписанные сертификаты (умеренные)
- Попробуйте использовать другие алгоритмы шифрования, кроме RSA, попробуйте DSA, Эль-Гамаля, эллиптических кривых Crypto (умеренный)
- Реализовать Диффи-Хеллмана keyexchange алгоритм (расширенный)
И как только вы закончите с я думаю, вы вполне разумно понимаете все это. Если вам все еще интересно, вы всегда можете погрузиться в более продвинутые вещи, такие как математика, например, как вы обманываете, доказательства правильности алгоритмов и т. Д.
Кстати, я просто наткнулся на недавнее открытие относительно SSL/TLS и с тех пор вы работаете по этому вопросу, возможно, вы хотели бы прочитать эту небольшую статью:
http://blog.ivanristic.com/2009/11/ssl-and-tls-authentication-gap-vulnerability-discovered.html
Что приложения вы планируете написать? Если это будет приложение ASP.NET, вы можете написать страницу «Hello,» ASP.NET с заменой пользователя, взятого из одного из свойств сертификата. В реальном приложении вы можете использовать что-то вроде серийной версии сертификата в качестве ключа для ввода базы данных. –
okutane
Я нашел это: http://www.example-code.com/csharp/certs.asp – Nestor