Afficher/cacher Sommaire
Compilation openssl 1.1 et nginx Debian Stretch
Build nginx (Mainline) with OpenSSL 1.1.0 on Ubuntu 16.04
Installer la dernière version disponible de Nginx avec OpenSSL version 1.1.x.
Installer les outils nécessaires pour compiler OpenSSL et nginx.
sudo apt install build-essential -y
OpenSSL 1.1.0
Nouveau répertoire
sudo mkdir -p /opt/openssl
cd /opt/openssl/
OpenSSL et téléchargement (openssl-1.1.0f.tar.gz du 25/05/2017)
sudo wget https://www.openssl.org/source/openssl-1.1.0f.tar.gz
sudo tar zxvf openssl-1.1.0f.tar.gz
cd openssl-1.1.0f
Configurer OpenSSL
sudo ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl
Compilation et installation , patienter de 3 à 8 minutes.
sudo make && sudo make install
Exécutez les tests suivants pour vérifier si l’installation a réussi.
which openssl
/usr/bin/openssl
Test de la version installée du système OpenSSL.
openssl version
OpenSSL 1.1.0f 25 May 2017
Testez la version personnalisée installée d’OpenSSL (elle est identique à celle installée car pas de openssl avant compilation).
/usr/local/openssl/bin/openssl version
OpenSSL 1.1.0f 25 May 2017
Vérifiez les paramètres installés disponibles d’OpenSSL.
/usr/local/openssl/bin/openssl ciphers -V "ALL:COMPLEMENTOFALL"
Nginx
Les sources
La clé PGP pour l’authentification.
cd ~
sudo wget https://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
Créer un fichier suivant pour obtenir les paquets nginx disponibles
sudo nano /etc/apt/sources.list.d/nginx-mainline.list
deb http://nginx.org/packages/mainline/debian/ stretch nginx
deb-src http://nginx.org/packages/mainline/debian/ stretch nginx
Mise à jour
sudo apt update
Créer un nouveau répertoire pour compiler nginx
sudo mkdir -p /opt/buildnginx
cd /opt/buildnginx/
Obtenir nginx
sudo apt source nginx
Ignorer le message suivant
W: Download is performed unsandboxed as root as file 'nginx_1.13.5-1~stretch.dsc' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission non accordée)
Les logiciels nécessaires pour installer nginx.
sudo apt build-dep nginx -y
Retour au dossier pour compilation
cd /opt/buildnginx/
Changer le nom du dossier nginx source
sudo mv nginx-1.13.5/ nginx-mainline
Bash de compilation
Fichier bash pouvant être exécuté , création :
cat > nginx-compil << EOF
#!/bin/bash
#logiciels pour compilation
sudo apt install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev unzip curl libcurl4-openssl-dev libossp-uuid-dev libssl-dev libxslt-dev libgd-dev libgeoip-dev libperl-dev libpam0g-dev libbz2-dev tar unzip curl git -y
# installation luajit ,dépendances Lua5.1 et lua-cjson
sudo apt install luajit lua5.1 liblua5.1-0 liblua5.1-0-dev lua-cjson -y
#Création dossier modules
sudo mkdir -p /opt/buildnginx/nginx-mainline/modules
#Modules externes : https://www.nginx.com/resources/wiki/modules/
cd /opt/buildnginx/nginx-mainline/modules/
#Clonage des modules externes avant compilation
# headers-more-nginx-module
sudo git clone https://github.com/openresty/headers-more-nginx-module
# ngx_http_auth_pam_module
sudo git clone https://github.com/stogh/ngx_http_auth_pam_module
#ngx_cache_purge
sudo git clone https://github.com/FRiCKLE/ngx_cache_purge
#ngx_devel_kit
sudo git clone https://github.com/simpl/ngx_devel_kit
#echo-nginx-module
sudo git clone https://github.com/openresty/echo-nginx-module
#ngx-fancyindex
sudo git clone https://github.com/aperezdc/ngx-fancyindex
# modification fancyindex pour avoir la ligne complète
#nginx-push-stream-module
sudo git clone https://github.com/wandenberg/nginx-push-stream-module
#lua-nginx-module
sudo git clone https://github.com/openresty/lua-nginx-module.git
#nginx-upload-progress-module
sudo git clone https://github.com/masterzen/nginx-upload-progress-module
#nginx-upstream-fair
sudo git clone https://github.com/gnosek/nginx-upstream-fair
#ngx_http_substitutions_filter_module
sudo git clone https://github.com/yaoweibin/ngx_http_substitutions_filter_module
#Chiffrement déchiffrement pour les variables nginx
sudo git clone https://github.com/openresty/encrypted-session-nginx-module.git
#Capacité d'échappement,“déséchappement”,encodage et décodage hexa,MD5,SHA1,Base32,Base64 ,etc…
sudo git clone https://github.com/openresty/set-misc-nginx-module
cd /opt/buildnginx/nginx-mainline
#Configuration , compilation et installation nginx
./configure \
--with-cc-opt='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2' \
--with-ld-opt=-Wl,-z,relro \
--prefix=/usr/share/nginx \
--conf-path=/etc/nginx/nginx.conf \
--http-log-path=/var/log/nginx/access.log \
--error-log-path=/var/log/nginx/error.log \
--lock-path=/var/lock/nginx.lock \
--pid-path=/run/nginx.pid \
--http-client-body-temp-path=/var/lib/nginx/body \
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
--http-proxy-temp-path=/var/lib/nginx/proxy \
--http-scgi-temp-path=/var/lib/nginx/scgi \
--http-uwsgi-temp-path=/var/lib/nginx/uwsgi \
--with-debug \
--with-pcre-jit \
--with-ipv6 \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_stub_status_module \
--with-http_realip_module \
--with-http_auth_request_module \
--with-http_addition_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_geoip_module \
--with-http_gzip_static_module \
--with-http_image_filter_module \
--with-http_mp4_module \
--with-http_perl_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_sub_module \
--with-http_xslt_module \
--with-mail \
--with-mail_ssl_module \
--with-openssl=/opt/openssl/openssl-1.1.0ft \
--add-module=/opt/buildnginx/nginx-mainline/modules/headers-more-nginx-module \
--add-module=/opt/buildnginx/nginx-mainline/modules/ngx_http_auth_pam_module \
--add-module=/opt/buildnginx/nginx-mainline/modules/ngx_cache_purge \
--add-module=/opt/buildnginx/nginx-mainline/modules/ngx_devel_kit \
--add-module=/opt/buildnginx/nginx-mainline/modules/echo-nginx-module \
--add-module=/opt/buildnginx/nginx-mainline/modules/ngx-fancyindex \
--add-module=/opt/buildnginx/nginx-mainline/modules/nginx-push-stream-module \
--add-module=/opt/buildnginx/nginx-mainline/modules/lua-nginx-module \
--add-module=/opt/buildnginx/nginx-mainline/modules/nginx-upload-progress-module \
--add-module=/opt/buildnginx/nginx-mainline/modules/ngx_http_substitutions_filter_module \
--add-module=/opt/buildnginx/nginx-mainline/modules/encrypted-session-nginx-module \
--add-module=/opt/buildnginx/nginx-mainline/modules/set-misc-nginx-module \
--add-module=/opt/buildnginx/nginx-mainline/modules/nginx-upstream-fair
#compilation
make
#installation
make install
#Copier le binaire pour le PATH
cp /usr/share/nginx/sbin/nginx /usr/sbin/
#Effacement compilation
make clean
#Dossier temporaire
mkdir -p /var/lib/nginx
#Dossier config
mkdir -p /etc/nginx/conf.d/
#dossier vhost
mkdir -p /var/www
EOF
Le rendre exécutable
chmod +x nginx-compil