AJenbo skrev:Tjo den del har jeg sådan set allerede forstået og været igennem.
Det store problem er at PHP ved forhandling om der skal bruges SSLv2 eller SSLv3 ved visse servere ender ud i at ville bruge SSLv2 selv om det ikke er implementeret og heller ikke registeret med php (se mit output fra php -i), og på tross at SSLv3 også er en mulighed.
Jeg skriver godt nok at jeg ikke er meget for at skulle patche webside koden, men jeg er endnu mindre for at skulle patche selve PHP så jeg håber lidt på at dette kan løse ved en konfiguration.
Jeg fik - indrømmet - læst det lidt rigeligt hurtigt..
Dit problem er altså at der ikke er nogen SSLv2 i OpenSSL.
Det løses med konfiguration, men nok ikke lige som du helst ville gøre det.
Der er andre SSL libs end OpenSSL.
Er SSLv2 vigtigt for dig kan du så finde sådan et andet SSL lib, og lave en PHP binding med SWIG. PHP bindingens kildekode laves fuldautomatisk af SWIG, når du først har lavet en config til opgaven der virker:
Andre SSL libs er:
Af dem står der i
http://en.wikipedia.org/wiki/Comparison_of_TLS_Implementations at kun OpenSSL og NSS understøtter SSLv2.
Du siger at OpenSSL har fjernet SSLv2, hvilket lyder rigtigt, da den protokol type af SSL er demonstreret til at være usikker, AFAIK.
Så er der kun NSS fra Mozilla tilbage. NSS er det SSL bibliotek der bruges i Firefox, Thunderbird.
Dens afhængigheder skulle være: libc, libnspr4, libsoftokn3, libplc4, libplds4. Kun zlib er optionalt - brug den kun hvis du vil have komprimering med.
I Ubuntu skal du også installere -dev pakkerne for at kunne oversætte fra kilde kode til en .so fil, som du ligger i en af de mapper som LIB miljøvariablen peger på.
Til sidst kører ldd-config for at opdatere den dynamiske linkers cache af software biblioteker.
Jeg ved heller ikke om den har en PHP binding til NSS, ellers må du lave den selv med SWIG:
Du er lidt heldig. Der er et software bibliotek der kan lege OpenSSL på den ene side, men i virkelighed kalder NSS.
Den adapter hedder nss_compat_ossl:
http://fedoraproject.org/wiki/Nss_compat_osslNu er øvelsen reduceret til at lave en SWIG binding til nss_compat_ossl, fordi du så får nogen der i PHP fortolkeren ligner at det er OpenSSL, hvorved at dit PHP framework der bruger OpenSSL kan bruge det uden ændringer, i teorien altså.
Du oversætter så PHP fortolkeren sammen SWIG binding koden til nss_compat_ossl, og husker ved samme lejlighed også at linke både nss_compat_ossl og NSS softwarebibliotekerne ind i PHP fortolkeren.
Er du heldig så findes der binær pakke af NSS så du slipper for at oversætte den fra kildekode, og en nss-dev pakke der lader dig bruge det NSS i ny kode (nss_compat_ossl). Er du rigtig heldig er der også en binær og dev pakke til nss_compat_ossl.
---
Det sværeste for dig bliver at lave en SWIG konfiguration der både i PHP syntax (den måde kode skrives på) og især i PHP semantik (den måde kode opfører sig) bliver helt identisk med OpenSSL PHP bindingen.
Når det lykkedes kan du som jeg før nævnte bruge nss_compat_ossl bindingen som en fuldstændig erstatning for OpenSSL. Oven i købet kan du konfigurere den sådan at den information der returneres i f.eks phphinfo er nøjagtige den samme som den fra OpenSSL.
Det betyder så at et PHP framework der har en afhængighed til OpenSSL både snydes til at tro at den arbejder med OpenSSL, men også at det rent faktisk virker som OpenSSL.
---
Alternativt, hvis nss_compat_ossl er lidt for langhåret, så laver du i stedet en PHP binding til NSS med SWIG.
I PHP kode laver så du en adapter,
http://www.netobjectivestest.com/PatternRepository/index.php?title=TheAdapterPattern.
Den skal selvfølgelig have et PHP interface, (syntax, og med samme semantik) der svarer til OpenSSL PHP bindingen.
Den PHP adapter kode bruger så PHP bindingen til NSS.
/Lars