Компилируемый код 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 уже сделали. Это ужасно, но цена правильная.