Проблемы SSL с IntraWeb - Delphi 2007
Я пытался, чтобы SSL работал над моей программой IW в течение последнего времени, и я продолжаю работать против "Не удалось загрузить библиотеку SSL". Я следовал всем советам, которые только мог найти по этому вопросу, но все равно не испытывал радости. Я попробовал предложенные DLL как в локальном каталоге, так и в system32.
У кого-нибудь есть окончательный ответ о том, какие библиотеки OpenSSL мне следует использовать? И какой из них строй? Или какие-то другие идеи вообще?
Indy: обновлен до самого последнего снимка вчера. IntraWeb: установлен D2007
Это работает на компьютере Vista, если это имеет какое-либо значение.
ТИА,
Тревор
4 ответа
РЕШИТЬ:
Похоже, проблема заключалась в том, что на моей машине плыл бпл.
Вот шаги, которые я предпринял на тот случай, если у кого-то еще возникнут проблемы с настройкой автономного сервера для работы с D2007 и предустановленными библиотеками:
- Удалите все следы Indy с вашей машины - где-то есть инструкция на сайте Indy;
- Загрузите ствол Indy 10 из хранилища Subversion
- Установите Indy согласно инструкции;
- Загрузите последнюю версию IW9 с atozed - вам понадобится ключ;
- Установите его - пусть он затенит вашу текущую установку;
Теперь для библиотек OpenSSL:
- Получить их можно здесь: http://www.slproweb.com/download/Win32OpenSSL_Light-0_9_8i.exe
- это хорошо работает для меня;
- Убедитесь, что ваш брандмауэр пропускает через порт 443 (или что вы выберете);
На данный момент я смог скомпилировать и запустить демо и мое приложение.
Спасибо за помощь.
Тревор
Вам нужны dll OpenSSL (0.9.8i работал для меня, но я не использую Vista), которую вы можете скачать здесь (как я полагаю, вы предлагаете, dll Indy не работает с IW9, который является версией в комплекте с D2007).
После установки скопируйте ssleay32.dll и libeay32.dll из system32 в каталог своего приложения.
Если это все еще не работает:
- порт ssl вашего контроллера сервера установлен на 443?
- ваш сертификат pw соответствует ssl cert pw вашего контроллера сервера?
- servercontroller.sslversion установлен в sslv23?
- Вы пытались скомпилировать / запустить демонстрационное приложение AtoZed для SSL (standalonessl)?
Надеюсь это поможет.
РЕДАКТИРОВАТЬ: как только вы это заработаете, вы захотите изменить sslversion на sslv3 и заставить пользователей отключить v2.
В ответе сегодня на тот же вопрос на внутриросетевом форуме новостных групп Embarcadero Чад З. Кудзу Ховер разместил эту ссылку (без каких-либо объяснений - только ссылка).
На этой странице есть ссылка на специальную сборку библиотек SSL.
Надеюсь это поможет.
Я тот, кто создал вышеупомянутую специальную сборку IntraWeb SSL dll. Чтобы завершить ответы выше, позвольте мне объяснить, почему возникла необходимость в специальной сборке:
Предыдущие выпуски Indy и IntraWeb использовали слегка измененную версию OpenSSL. Изменения включают в себя несколько функций, связанных, например, с расчетами часовых поясов, которые не были доступны в Delphi или Indy в то время.
Поэтому, когда кто-то использовал неизмененный набор библиотек OpenSSL (а не библиотек Indy OpenSSL) вместе со старой версией Indy или IntraWeb, он получит ошибку "Не удалось загрузить библиотеку SSL" из-за отсутствующего экспорта.
Начиная с версии Indy, которую мы используем с Delphi 2009, эти изменения больше не нужны. Вот почему текущая версия Indy - из SVN даже с Delphi 2007 - вместе с IntraWeb также работает с dll из slproweb (которые не включают эти модификации).
Но учтите, что для библиотек slproweb требуются библиотеки времени выполнения MS VC++.
Чтобы обойти это, я регулярно создаю собственный набор dll для Indy: ftp://ftp.fulgan.com/SSL/
На сегодняшний день у вас должно быть все в порядке, используя это издание: ftp://ftp.fulgan.com/SSL/openssl-1.0.0d-i386-win32-rev2.zip
Мой набор DLL не требует установки времени выполнения MC VC.
Поэтому можно с уверенностью сказать, что любая версия Indy, более новая, чем Delphi 2009 и / или соответствующая версия SVN, безопасна для использования с slproweb (с зависимостями VC) или с нашими собственными (из зеркала fulgan) библиотеками.