Компилируемый код C++ для реализации защищенного клиента SLL/TLS с помощью MS SSPI
Как описано здесь http://www.ddj.com/cpp/184401688
У меня нет времени писать это с нуля.
спросил и не ответил https://stackoverflow.com/questions/434961/implementing-ssl
ВОПРОС:
Я ищу некоторые компилируемый работающего исходный код, реализующий MS SSPI (как указано в потоке выше), процедурный не ООП предпочтительный.
Я посмотрел образец проектов кода здесь:
http://www.codeproject.com/KB/IP/sslclasses.aspx
но это C# OOP. Преобразование этого кода в C++ не является тривиальным.
OpenSSL
вызовы SChannel следуют стандартам API GSS. Есть, конечно, некоторые альтернативы-OpenSSL, например. Этот пакет является полной и тщательной реализацией протокола и для кого-то все слишком хорошо знакомый с UNIX, несомненно, лучший выбор. Первоначально пакет был нацелен на сообщество UNIX, и для его компиляции используется среда Perl, поэтому для разработчиков Windows, которые никогда не работали с системами UNIX, требуется некоторая кривая обучения.
кроме того, OpenSLL делает некоторые очень нестандартные вещи
Николай, Имея contibuted много компилируемого исходного кода (www.coastrd.com) Я надеялся найти кого-то, кто сделает то же самое.
4 ответов
этот пример SSPI SChannel SMTPS должен компилироваться и запускаться в Visual Studio 2008 как
http://www.coastrd.com/c-schannel-smtp
SChannel-это реализация Microsoft API GSS, которая обертывает протокол SSL/TLS.
преимущества использования SChannel:
- кровавые детали защищены от разработчика SSPI.
- дополнительная настройка не требуется для запуска финала применение:
- SChannel является неотъемлемой частью операционной системы
- на Windows ME / 2000 / XP/... платформы, SChannel устанавливается и настраивается по умолчанию
- вызовы SChannel следуют стандартам API GSS.
- вам не нужно создавать/устанавливать какие-либо сертификаты
- нет сторонних dll (1 Мб или больше) для доставки и установки
код должен создать сеанс, который выглядит так:
----- SSPI инициализирован
----- WinSock Инициализирован
----- Инициализированы Учетные Данные
----- Connectd К Серверу
Отправлено 70 байт данных рукопожатия
Получено 974 байта данных рукопожатия
Отправлено 182 байта данных рукопожатия
Получено 43 байта данных рукопожатия
Рукопожатие прошло успешно
----- Клиентское Рукопожатие Выполнено
----- Аутентификация Учетных Данных Сервера
сервер тема: C=США, S=Калифорния, L=Маунтин-Вью, O=Google Inc, CN=smtp.gmail.com
Эмитент сервера: C=ZA, S=Western Cape, L=Cape Town, O=Thawte Consulting cc, OU=отдел сертификационных услуг, CN=Thawte Premium Server CA, E=premium-server@thawte.com
- - - - - - Цепочка Сертификатов Отображается
----- Сертификат Сервера Проверен
----- Выпущен контекст сертификата сервера
протокол: TLS1
Шифр: шифр RC4
Стойкость шифра: 128
Хэша: MD5
Хэш-сила: 128
Обмен ключами: RSA
Сила обмена ключами: 1024
----- Информация О Безопасном Подключении
64 байта (зашифрованных) полученных данных приложения
Расшифрованные данные: 43 байт
220 mx.google.com ESMTP 6sm17740567yxg.66
отправка 7 байт открытого текста:
команда EHLO
28 байт зашифрованных данных, переданных
169 байт (зашифрованных) полученных данных приложения
Расшифрованные данные: 148 байт
250-mx.google.com к вашим услугам, [22.33.111.222]
250-размер 35651584
250-команда 8bitmime
250-AUTH LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250 конвейеризация
отправка 7 байт открытый текст:
QUIT
28 байт зашифрованных данных, переданных
69 байт (зашифрованных) полученных данных приложения
Расшифрованные данные: 48 байт
221 2.0.0 закрытие соединения 6sm17740567yxg.66
- - - - - - сеанс SMTP завершен
Отправка Close Notify
Отправлено 23 байта данных рукопожатия
----- Отключен От Сервер
----- Начать Очистку
----- Все Сделано - - - - -
повторяй за мной: "я хочу использовать OpenSSL".
эта проблема слишком серьезна и слишком легко испортить, чтобы катиться самостоятельно каждый раз, когда вы хотите ее решить. Если у вас есть проблема с OpenSSL, попробуйте решить эту проблему через диалог и исправления в OpenSSL.
(никто не застрахован от облажаться, даже Microsoft, или действительно, OpenSSL. Используйте что-то, чей источник вы можете просмотреть и который исправляется, когда есть проблемы. Использовать В OpenSSL.)
может быть этой ссылке является хорошей отправной точкой. Он содержит фактически рабочий пример кода с использованием MS SSPI (хотя он выглядит очень специфичным для MSVC, но ок, его окна только в любом случае). Просто игнорируйте примеры OpenSSL; -)
сколько бы вы заплатили за такой компилируемый рабочий исходный код? Или вы ожидали, что кто-то просто отдам его тебе? Ребята OpenSSL уже сделали. Это ужасно, но цена правильная.