Как да ИЗГРАДИМ OpenSSL за Indy

Как мога да създам OpenSSL, така че да мога да ги свържа статично за използване с Indy 10.6 за платформи Windows 32/64? Има ли някъде задълбочено ръководство за компилиране без никакви зависимости от VC++? Чух, че Indy се нуждае от персонализиран OpenSSL код, а не от официалния. Също така какъв компилатор да използвам? VS2010, VS11, VS13?

Би било хубаво, ако дойде с .lib файлове, както е за iOS.


person user3060326    schedule 03.12.2013    source източник


Отговори (1)


Indy спря да използва специално създадени OpenSSL DLL файлове преди години и оттогава използва официални DLL файлове.

Понастоящем обаче Indy не поддържа статично свързване на OpenSSL на платформи, различни от iOS (има TODO елемент за това, но не очаквайте да бъде внедрен скоро, освен ако някой друг не го направи и изпрати промените за включване в Indy). Дори ако можете да компилирате статични .obj файлове за OpenSSL в Windows, пак ще са необходими някои промени в кода в изходния код на Indy, за да се използват тези файлове. Ще трябва да направите тези промени ръчно (вижте тази дискусия: Как статично да свържете Indy SSL файлове), докато не бъдат направени в Indy родно в някое бъдеще време.

Единствената причина, поради която Indy поддържа OpenSSL статично на iOS, е, че Apple не позволява OpenSSL да се използва динамично на устройства с iOS (въпреки това го прави в симулатора на iOS). Всяка друга платформа позволява OpenSSL да се зарежда динамично и това е начинът, по който OpenSSL е проектиран да бъде използван основно.

person Remy Lebeau    schedule 03.12.2013
comment
Е, Eldos има решение. Но струва $1500. Така че защо Windows е изключен, но iOS не е? Наличието на dll е по-малко сигурно поради атаки за закачане на dll. Тук не споменавате, че не може да се направи. връзка - person user3060326; 03.12.2013
comment
Отново, Apple изисква OpenSSL (и всяка друга библиотека на трета страна, за този въпрос) да бъде статично компилиран в приложения за iOS, няма опция за динамично използване на външни библиотеки. Това е единствената причина Indy да поддържа статична версия на OpenSSL на iOS. Никоя друга платформа (включително симулатора на iOS) няма това ограничение, така че никога преди не е имало нужда OpenSSL да се поддържа статично на която и да е платформа. - person Remy Lebeau; 04.12.2013
comment
Що се отнася до друга дискусия, #2 и #4, споменати в нея (редактиране на IdCompilerDefines.inc и IdSSLOpenSSLHeaders_static.pas за разпознаване на статични библиотеки на OpenSSL в Windows) има все още не е приложен в Indy. Но аз го засегнах по-горе, когато казах, че ще изисква промени в кода в изходния код на Indy. - person Remy Lebeau; 04.12.2013
comment
да, знаем как HeartBleed влияе на OpenSSL. Внедряването на Indy не е безопасно, точка! - person user3060326; 21.04.2014
comment
Heartbleed няма нищо общо с Indy, това е грешка в самия OpenSSL. Всичко, което трябва да направите, е да внедрите най-новите OpenSSL DLL файлове с вашето базирано на Indy приложение и Heartbeat вече няма да бъде фактор. Не са необходими промени в кода, не е необходимо повторно компилиране (с изключение на приложения за iOS). - person Remy Lebeau; 22.04.2014
comment
Защо не използвате реализацията на Windows SSL за SSL? Кога това ще бъде добавено към Indy? - person user3060326; 22.04.2014
comment
Той е в списъка TODO, но все още няма ETA, тъй като никога преди не съм работил с този конкретен API. Освен това, това ще се отнася само за Windows, но Indy поддържа използването на OpenSSL на много други платформи. - person Remy Lebeau; 22.04.2014
comment
CleverComponents HTTP не се нуждае от DLL и използва SSL.. така че това е много лош аргумент. - person user3060326; 22.04.2014
comment
AFAIK, Clever използва собствена реализация на SSL/TLS, написана от нулата. Това е голямо начинание, което Indy няма да предприеме скоро поради време и работна сила, да не говорим, че подлага потребителските приложения на международните закони за внос/износ на вграден код за криптиране. Indy използва OpenSSL, тъй като е широко достъпен и широко поддържан на повечето платформи и се актуализира лесно, когато се пуснат корекции, без да се изисква повторно компилиране на потребителски приложения. Indy ще започне да поддържа API за шифроване на Microsoft в Windows в бъдеща версия, но други платформи нямат естествени API за шифроване, следователно OpenSSL. - person Remy Lebeau; 22.04.2014
comment
Това не е много лош аргумент, това е умишлено дизайнерско решение за поддръжка на различни платформи. - person Remy Lebeau; 22.04.2014