OPENSSL_ALGO_SHA256 na PHP 5.2.17

OPENSSL_ALGO_SHA256 na PHP 5.2.17
« kdy: 24. 02. 2017, 09:17:36 »
Zdravím ve spolek.

Implementuji EET na starou verzi PHP a narazil jsem problém. Potřebuji použít PHP funkci openssl_sign se čtvrtým parametrem OPENSSL_ALGO_SHA256, což ale PHP ve verzi 5.2.17 nezná.

Existuje nějaký způsob jak to vyřešit?

Děkuji.


Jirsákova tchýně

Re:OPENSSL_ALGO_SHA256 na PHP 5.2.17
« Odpověď #1 kdy: 24. 02. 2017, 09:24:50 »
Existuje nějaký způsob jak to vyřešit?

Jistě. Aktualizovat PHP. Implementovat něco na verzi PHP, která je 6 let EOLed a děravá jako cedník je prostě totální magořina, sorry.

motyq

Re:OPENSSL_ALGO_SHA256 na PHP 5.2.17
« Odpověď #2 kdy: 24. 02. 2017, 09:32:14 »

Jistě. Aktualizovat PHP. Implementovat něco na verzi PHP, která je 6 let EOLed a děravá jako cedník je prostě totální magořina, sorry.
[/quote]
+1, pokud by ani tohle nebyl důvod, jak donutit zákazníka k upgradu php (obecně k upgradu kvůli EOL nebo dírám), tak bych asi takového zákazníka nechtěl. Už jsem se dostal do stavu, kdy si takto nechci špinit ruce. Až se Vám to povede implementovat i se starou verzí php a možná někdy v budoucnu se něco podělá, už si nikdo nevzpomene, že jste jim říkal ať upgradnou - už si pouze vzpomenou na to, že jste to programoval vy.


Re:OPENSSL_ALGO_SHA256 na PHP 5.2.17
« Odpověď #3 kdy: 24. 02. 2017, 09:49:22 »
Podívat se do zdrojáků příslušné verze PHP, jak je ta funkce implementovaná. Je možné, že ten parametr jen vezme a předá dál do knihovny OpenSSL – v takovém případě by stačilo jen jí předat správnou hodnotu parametru, i když pro něj neexistuje pojmenovaná konstanta. Samozřejmě to předpokládá, že je tam dostupná dostatečně nová verze OpenSSL, která ten algoritmus bude podporovat.

j

Re:OPENSSL_ALGO_SHA256 na PHP 5.2.17
« Odpověď #4 kdy: 24. 02. 2017, 10:07:18 »
...
Prepokladam, ze to phpcko vymenit nemuzes, takze z nej primo zavolej openssl. Nebude to sice krasny, ale nejspis to bude fungovat. Pripadne si nekde vedle spust "proxy" = nahodis servisu ktery predas jen cisla na uctenku (cenu...) a pobezi na novsi verzi.

2motyq: jasne, on si zakaznik necha kompletne prepsas za par stovek k ne-li par M nejakou appku, jen proto, aby podporovala novejsi php.


Trupik

Re:OPENSSL_ALGO_SHA256 na PHP 5.2.17
« Odpověď #5 kdy: 24. 02. 2017, 10:37:05 »
...
Prepokladam, ze to phpcko vymenit nemuzes, takze z nej primo zavolej openssl. Nebude to sice krasny, ale nejspis to bude fungovat. Pripadne si nekde vedle spust "proxy" = nahodis servisu ktery predas jen cisla na uctenku (cenu...) a pobezi na novsi verzi.

2motyq: jasne, on si zakaznik necha kompletne prepsas za par stovek k ne-li par M nejakou appku, jen proto, aby podporovala novejsi php.
Ono to môže byť lacnejšie, než strata dát, odstávka výroby, únik citlivých údajov, nabúranie siete, kompromitácia hesiel, ... Vyriešiť tých zopár deprecated funkcií a konštruktov nemôže byť také ufo, iba že by tá ich aplikácia bola napísaná totálne antipatternovo už od začiatku.

Re:OPENSSL_ALGO_SHA256 na PHP 5.2.17
« Odpověď #6 kdy: 24. 02. 2017, 13:47:16 »
Aktualizace je samozřejmě nejjednodušší rada a zároveň je to pro mě i poslední řešení. Se*e mě, když dělám se starým softem ať už kdekoli, ale já nejsem majitel. Kdybych byl, tak aktualizuji PHP i DB skoro s každou novou verzí (na svém serveru to tak dělám) :)
Takže odpověď "aktualizovat PHP" je sice nejsprávnější, ale užitečná asi jako "nedělej EET".
Pokud by se muselo aktualizovat, tak by se stejně přešlo z PHP 5.2. třeba jen na 5.4 právě proto, aby se zbytek webu nerozbil. Ten web by bohužel bylo levnější udělat znovu než ho přepisovat pro novější verzi PHP.

Volat openssl přímo? Pokud myslíte přes exec() nebo system(), tak tyto funkce jsou na tomto hostingu zakázány.

Do zdroje jsem koukal, ale nevidím tam nic, co by mi pomohlo. Bohužel jde o EET, takže mám jen 4 dny na vyřešení problému a to musím ještě implementovat na další weby, takže se tím nemohu moc zabývat. Doufal jsem, že existuje nějaká PHP knihovna s touto funkčností.

Dobrá tedy. Děkuji všem :)

Jamie

Re:OPENSSL_ALGO_SHA256 na PHP 5.2.17
« Odpověď #7 kdy: 24. 02. 2017, 14:23:19 »
Bohužel dle zdrojáků PHP si ten parametr zpracuje přez switch, kde si vrací tu konkrétní hash funkci. Takže to nefunguje tak, že by ten parametr předal openssl knihovně a nechal to na ní.
Hledal jsem, ale žádnou knihovnu, která by tohle simulovala jsem nenašel. Takže buď upgrade, a nebo si udělej hosting na normálním PHPku a udělej si EET jako službu, přes kterou budeš posílat ty účtenky.

OT: To teda řeší EET brzo ... jinak deadline 4 dny je taky super ;)

Jirsákova tchýně

Re:OPENSSL_ALGO_SHA256 na PHP 5.2.17
« Odpověď #8 kdy: 24. 02. 2017, 14:50:06 »
OT: To teda řeší EET brzo ... jinak deadline 4 dny je taky super ;)

Pobavilo. S takovouhle "zakázkou" bych poslal dotyčného tak leda do pééérdele.

Re:OPENSSL_ALGO_SHA256 na PHP 5.2.17
« Odpověď #9 kdy: 24. 02. 2017, 15:57:11 »
Moc díky za snahu (hlavně Jamiemu) :)
Už se pracuje na přesunu hostingu, takže je víceméně vyřešeno.

S tou deadline to není tak jak to úplně vypadá. Na EET dělám už od listopadu, nasazovalo se to na první vlnu a teď se dělají weby pro druhou vlnu (několik zákazníků). Dlouho už to běželo na testovací verzi a teď se jen vše přesouvá na ostré weby. A tady se holt našla jedna výjimka na prastarém hostingu :)

Lol Phirae

Re:OPENSSL_ALGO_SHA256 na PHP 5.2.17
« Odpověď #10 kdy: 24. 02. 2017, 16:04:04 »
To by možná stálo za jmenování, jaký magor může dnes nabízet "službu" jako je hosting s PHP 5.2  :o

Re:OPENSSL_ALGO_SHA256 na PHP 5.2.17
« Odpověď #11 kdy: 24. 02. 2017, 16:35:03 »
No raději si to nechám pro sebe, ať někoho nešpiním. Určitě to je spíš z dřívějška, pro lidi, který ten hosting ještě používají, tak aby nemuseli přepisovat své weby.

Jinak tady se někomu povedlo najít nějaké řešení, ale jak jsem psal - už se přesouvá, takže už to teď zkoušet nebudu - možná později ze zvědavosti.