How To: Сборка Nginx со сторонней версией OpenSSL на Fedora 14

Есть у нас один старый сервер на Fedora 14 (о нем я уже писал в заметке о закрытии уязвимости в bash). В связи с последними уязвимостями в OpenSSL и жутко древнего OpenSSL в системе было решено поставить Nginx перед Apache и термнировать SSL трафик на нем.

Установили и настроили Nginx:

$ sudo yum install nginx

Но вот незадача, системный Nginx оказался древним (0.8.54) и многого не умел из коробки. Было принято решение собрать последний Nginx (1.9.1) и установить его поверх системного. Это позволит не заморачиваться со скриптами инициализации.

Делается это довольно просто. Для начала ставим необходимые пакеты:

$ sudo yum -y install gcc gcc-c++ make zlib-devel pcre-devel openssl-devel

Теперь скачиваем Nginx и собираем его:

$ cd /usr/src
$ wget http://nginx.org/download/nginx-1.9.1.tar.gz
$ tar -vxf nginx-1.9.1.tag.gz
$ cd nginx-1.9.1
$ ./configure --user=nginx --group=nginx --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --with-http_ssl_module --with-pcre
$ make

Для установки требуются root права:

$ sudo make install

Рестарт Nginx показал, что все работает как положено, но системная библиотека openssl очень старая и не поддерживает TLSv1.2. Пришлось собирать nginx со свежей версией openssl:

$ cd /usr/src
$ wget https://www.openssl.org/source/openssl-1.0.2a.tar.gz
$ tar -vxf openssl-1.0.2a.tar.gz
$ cd /usr/src/nginx-1.9.1
$ make clean
$ ./configure --user=nginx --group=nginx --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --with-http_ssl_module --with-pcre --with-openssl=/usr/src/openssl-1.0.2a/
$ make

Процесс сборки nginx с новой библиотекой openssl несколько дольше, чем без нее, но проходит все гладко. Устанавливаем:

$ sudo make install
$ sudo /etc/init.d/nginx restart


Comments !