Aktualizacja haproxy - kompilacja statyczna OpenSSL ze źródeł

W dzisiejszym artykule, pokażę Ci drogi czytelniku jak można zainstalować nowszą wersję haproxy na maszynie opartej na RHEL. W tym przypadku skorzystamy z CentOS-a. 

Z racji, że nie zawsze możemy zaktualizować wszystko po przez systemowe menadżery, zastosujemy tutaj ręczną kompilację do najnowszych wersji pakietów. Z racji że haproxy jest ściśle powiązane z wersją OpenSSL, należy podnosić je obie razem (ze względu np na obsługiwane "ssl-default-bind-ciphersuites"). Nie zawsze możemy jednak podnieść globalnie OpenSSL w naszej dystrybucji. Może to całkowicie uszkodzić nasz system! Aby temu zapobiec, w takiej sytuacji zalecam skompilować nasze haproxy, tak by statycznie linkowało nasz OpenSSL.


Instalacja OpenSSL

Zaczniemy od przejścia do naszego roboczego katalogu. Pobierzemy do niego najnowszą wersję openssl, którą następnie wypakujemy.

cd /usr/local/src
wget https://www.openssl.org/source/openssl-3.5.0.tar.gz
tar xvf openssl-3.5.0.tar.gz
cd openssl-3.5.0

Po czym dokonamy pełnej kompilacji najnowszej wersji openssl-a jako statycznej biblioteki.

./Configure linux-x86_64 no-shared --prefix=/opt/openssl-3.5
make -j$(nproc)
make install_sw

Powinniśmy otrzymać w katalogu /opt/openssl-3.5/lib64/ nasze skompilowane nowe biblioteki z rozszerzeniem *.a.


Instalacja Haproxy

Podobnie jak to było w kroku pierwszym, pobieramy nasze haproxy i je rozpakowujemy.

cd /usr/local/src
wget http://www.haproxy.org/download/3.2/src/haproxy-3.2.0.tar.gz
tar -xzf haproxy-3.2.0.tar.gz
cd haproxy-3.2.0

Teraz czas na najważniejszy krok, kompilujemy nasze haproxy, tak aby skoczystało z statycznych wersji naszego OpenSSL.

make -j$(nproc) TARGET=linux-glibc USE_OPENSSL=1 USE_PCRE=1 USE_SYSTEMD=1 SSL_STATIC=1 \
SSL_LIB=/opt/openssl-3.5/lib64 \
SSL_INC=/opt/openssl-3.5/include \
ADDLIB="/opt/openssl-3.5/lib64/libssl.a /opt/openssl-3.5/lib64/libcrypto.a -ldl"

Po kompilacji, sprawdzamy czy nasza nowa binarka korzysta z nowej wersji OpenSSL.

./haproxy -vv | grep -i openssl

Jeśli się to udało (patrz "Built with SSL library version"), możemy dodać naszą binarkę haproxy, tak aby nadpisywała starą. Zrobimy to po przez trik z /usr/local.

cp ./haproxy /usr/local/sbin/haproxy
chmod +x /usr/local/sbin/haproxy

Pozostaje nam tylko sprawdzić czy wszystko się udało.

haproxy -vv | grep -i openssl

Kamil Mirończuk

I kiedy czegoś gorąco pragniesz, to cały wszechświat sprzyja potajemnie twojemu pragnieniu
~Paulo Coelho

Komentarze

Zostaw komentarz

Twój adres mailowy NIE zostanie opublikowany. W razie otrzymania zapytania, otrzymasz na niego odpowiedź.
Wymagane pola są oznaczone jako *