Saabub OpenSSL 3 tugi – ka aegunud PHP versioonidele
Zone veebimajutusplatvormi aluseks olevat ZoneOS operatsioonisüsteemi ootab ees suurem uuendus: juurutame OpenSSL 3. versiooni. See muutus mõjutab pea kõiki rakendusi, mis tegelevad krüptograafiaga, kuid enamikul juhtudel pole see lõppkasutajate jaoks märgatav. Üleminek on aja ja ressursimahukas, sest oleme pidanud lisama vajaliku toe PHP pärandversioonidele vahemikust 5.6 kuni 8.0.
Seni oleme backportinud turvapaiku uutest versioonidest OpenSSL’i versioonile 1.1, sest vanemad PHP versioonid ei tööta uuema OpenSSL-iga. See pole aga pikas perspektiivis jätkusuutlik lahendus ja seepärast oleme hakanud panustama vanemate PHP versioonide ise parandamisele, et need töötaksid uuema OpenSSL’iga. Nüüd oleme selle mahuka protsessiga lõpusirgele jõudnud.
Rindemehe kontekst
IT-maailm on võõras? Toome paralleeli sõjarindelt. Tagasi porditud turvapaigad on võrreldavad nõukogude ajast pärit MiG hävitajatele lääne rakettide kasutamiseks mõeldud üleminekute külge kruvimisega. Täielik üleminek OpenSSL versioonile 3 on pigem analoogne F-16 hävitajate kasutuselevõtuga.
Kõnealune muudatus jõuab serveritesse järk-järgult käesoleva aasta juuli ja augusti jooksul. Esmalt veebimajutusteenusele ning seejärel nutikatele pilve- ja privaatserveritele.
Seda, kas muudatus on serverisse jõudnud, saab PHP veebirakenduses teha lihtsa koodijupiga:
echo OPENSSL_VERSION_TEXT;
Code language: PHP (php)
OpenSSL 3 tugi vananenud PHP versioonidel
Pärandvaraks muutunud aegunud PHP versioone enam arendajate poolt ei parandata ega täiendata, seepärast on meie programmeerijad ise lisanud OpenSSL 3.0 toe ka neile.
Olulisim sellega seonduv muutus on OpenSSL security level-i rangemaks muutumine – vaikimisi ei aktsepteerita siis enam TLS 1.2 standardist nõrgemaid ühendusi. See võib tekitada probleeme, kui PHP vahenditega tehakse ühendusi serveriga, mis toetab ainult igivana TLS krüptot.
OpenSSL security level’it on PHP dokumentatsiooni järgi võimalik seadistada alates PHP 7.2 versioonist, kuid meie arendajate tiim on loonud selle võimaluse ka vanematesse versioonidesse. Nii on see kasutatav alates versioonist 5.6.
Vaikimisi security level’it on võimalik ka nõrgemaks seadistada. Mida iga tase tähendab, seda saab lugeda OpenSSL dokumentatsioonist. Vihjeks võib öelda, et mida väiksem tase, seda ebaturvalisem on security level, null- ehk 0-tasemega võib arvestada, et praktiliselt seda ei eksisteerigi.
Kui kasutatakse mõnda sisemist pärandvara rakendust, mis tõesti vajab turvataseme alandamist, piisab järgmise koodijupi lisamisest:
stream_context_set_default([
'ssl' => [
'security_level' => 0,
]
]);
Code language: PHP (php)
Kui on juba kindlalt teada, et pärandvara rakendus vajab tulevikus nõrgemat turvataset, saab versioonikontrolli juba varem sisse viia järgmiselt:
if (defined('OPENSSL_VERSION_NUMBER') && OPENSSL_VERSION_NUMBER >= 0x3000000f) {
stream_context_set_default([
'ssl' => [
'security_level' => 0,
]
]);
}
Code language: PHP (php)