2016-11-02 5 views
3

У меня есть программа, которая в настоящее время использует Delphi 7 с Indy 9 (я считаю), которая выполняет несколько запросов HTTP GET. Мне нужно преобразовать их для использования HTTPS сейчас.delphi 7 convert HTTP получает до HTTPS получает

Серверная сторона находится под моим контролем.

Я также не хочу устанавливать внешние библиотеки DLL с моей программой.

Я выполнил множество поисковых запросов Google, но мне кажется, что я либо должен установить внешние DLL OpenSSL, либо перейти на более позднюю версию Delphi, либо использовать сторонний элемент управления, который не так прост, как компонент TIdHTTP.

Есть ли у кого-нибудь предложения о том, с чего начать?

ответ

6

К сожалению, для Indy 9 требуются DLL для OpenSSL для SSL/TLS, и даже тогда требуется нестандартных версий версий DLL. Эти DLL доступны на Indy's Fulgan mirror в папке /SSL/Archive.

Для использования HTTPS в TIdHTTP в Indy 9, просто назначить TIdSSLIOHandlerSocket компонент Инди к TIdHTTP.IOHandler собственности, а затем развернуть пользовательские OpenSSL библиотеки DLL с приложением. Но учтите, что библиотеки DLL очень старые (как и Indy 9 в целом), поэтому вы не сможете использовать современные протоколы безопасности за пределами TLS 1.0.

Indy 10, с другой стороны, не требует OpenSSL конкретно. OpenSSL - это Indys's по умолчанию SSL/TLS, но вы можете подключить еще один движок SSL/TLS, написав/получив для него компонент оболочки 10. Некоторые сторонние SSL/TLS-двигатели предоставляют такой SSLIOHandler, например Eldos SecureBlackbox, и могут существовать и другие сторонние SSLIOHandler реализации.

В теории, Indy 10 поддерживает версию Delphi обратно 5 (хотя более старые версии не регулярно проверять), так что вы должны быть в состоянии обновить Delphi 7 приложения использовать Indy 10.

Для использования HTTPS в TIdHTTP в Indy 10, просто назначьте TIdSSLIOHandlerSocketBase -определенный компонент в свойство TIdHTTP.IOHandler, а затем разверните DLL (если есть) с вашим приложением. TIdSSLIOHandlerSocketOpenSSL компонент

Indy 10 использует стандартные библиотеки DLL OpenSSL, а не пользовательские библиотеки DLL, так что вы можете использовать любой дистрибутив OpenSSL DLL (есть уточненный библиотек DLL, предусмотренный в зеркале Fulgan в папке /SSL).

Если вы непреклонны избежать библиотеки DLL, и вы не хотите платить много денег за двигатель третьего партия SSL/TLS, вы могли бы по крайней мере написать свой собственный SSLIOHandler, что обертку от Microsoft SChannel API, который построен - в Windows и не полагается на дистрибутивные библиотеки DLL (ожидается, что реализация на базе SCanel SSLIOHandler будет включена в будущую версию Indy).