(最新版)OpenSSLをコンパイル(TLS1.3対応含む)して、それにリンクするNginxをコンパイルするときの勘所

CentOS, HTTP SERVERCentOS7, Nginx, systemconfigCentOS, HTTP SERVER, systemconfig

以前にも同じ内容で記事を書いたのですが、前記事を書いてから結構な期間が過ぎているので、最新のOpenSSL、Nginxのソースを使った導入方法を紹介します。
これは最新のOpenSSLを用いる事で、TLS1.3を使用可能にする目的があります。

それでは、まずはOpenSSLのコンパイルパラメータから紹介します。今回使うOpenSSLは現時点(2019/09/19)で最新のVer 1.1.1dを使用します。

まずは、OpenSSLのダウンロードします。

wget "https://www.openssl.org/source/openssl-1.1.1d.tar.gz" 

そのまま解凍します。
※【/usr/local/src】配下に展開します。

tar xvfz openssl-1.1.1d.tar.gz
cd openssl-1.1.1d

で、コンパイルパラメータを指定するのですが、LDFLAGSを下記指定をしておかないとOpenSSLに含まれる他のシェアードライブラリを読み込めなくなり、ハマる事になります。
※【/usr/local/lib/openssl】については、適宜インストール先に応じて読み替えて下さい。

LDFLAGS="-Wl,-rpath=/usr/local/lib/openssl/lib" \
./config  --prefix=/usr/local/lib/openssl shared zlib

そして、コンパイル・インストールです。

make
make install

以上、OpenSSLのインストールは終了です。
次にNginxのインストールを行います。

まずは、ソースをダウンロードします。
現時点で最新のVer 1.17.3をダウンロードします。

wget https://nginx.org/download/nginx-1.17.3.tar.gz

そのまま解凍します。

tar xvfz nginx-1.17.3.tar.gz
cd nginx-1.17.3

コンパイルパラメータの指定になりますが、OpenSSLを指定するパラメータが元々あったようで、今回はこれを指定します。

./configure \
--prefix=/usr/local/ap/nginx \
--pid-path=/var/run/nginx.pid \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-http_v2_module \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-http_realip_module \
--with-http_geoip_module \
--sbin-path=/usr/local/ap/nginx/nginx \
--conf-path=/usr/local/ap/nginx/etc/nginx.conf \
--with-pcre \
--without-http_autoindex_module \
--without-http_browser_module \
--without-http_empty_gif_module \
--without-http_limit_req_module \
--without-http_limit_conn_module \
--without-http_map_module \
--without-http_memcached_module \
--without-http_scgi_module \
--without-http_split_clients_module \
--without-http_upstream_ip_hash_module \
--without-http_userid_module \
--without-http_uwsgi_module \
--with-debug \
--with-openssl=/usr/local/src/openssl-1.1.1d \ ←OpenSSL1.1.1dとリンクさせる
--with-openssl-opt=enable-tls1_3 ←TLS1.3を有効にする

コンパイル・インストールをします。

make
make install

以上で、NginxでTLS1.3が使用できるようになります。

ssl_protocols TLSv1.3 TLSv1.2;

そして最後になりますが、OpenSSL自体のコンパイル・インストールは必須ではありません。ただし、Nginxのコンパイル時に必要となるのでダウンロード・展開だけは行っておいて下さい。

以上、他に何かありましたら、コメントにてお受け付け致します。
では、では。

CentOS, HTTP SERVERCentOS7, Nginx, systemconfig

Posted by tsuka