Last Updated on 10월 7, 2021 by Jade(정현호)
Nginx - HTTP/2 와 TLS v1.3
Nginx 에서 HTTP/2 적용 과 HTTPS TLS v1.3 를 사용하기 위해서는 일정 이상의 버전이 필요합니다.
HTTP/2 : nginx 1.9.5 이상 , OpenSSL 1.0.2
HTTPS TLS v1.3 : nginx 1.13.0 이상, OpenSSL 1.1.1
하지만 CentOS 7.8 버전에서 yum(패키지)로 설치 가능한 버전은 아래와 같이 1.19.4 with OpenSSL 1.0.2k 입니다
[root]# nginx -V
nginx version: nginx/1.19.4
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
[root]# openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017
버전은 충족하지만 Build 시 Include 된 OpenSSL 의 버전이 낮음으로 Nginx를 Source Compile 하거나 Source RPM(SRPM) 으로 컴파일이 필요 합니다.
* 이전 글에서 포크된 글 입니다.
사전 패키지 설치 및 파일 다운로드
필요 패키지 설치
• CentOS 7
[root]# yum -y install wget gcc gcc-c++ make \
openssl-devel libxml2-devel libxslt-devel \
gd-devel perl-ExtUtils-Embed GeoIP-devel \
pcre-devel rpm-build yum-utils curl gnupg2
• CentOS 8
[root]# dnf install rpm-build yum-utils \
curl gnupg2 wget gcc gcc-c++ make \
openssl-devel libxml2-devel \
libxslt-devel perl-ExtUtils-Embed \
GeoIP-devel gd-devel pcre-devel \
perl-Pod-Html
Create a user to perform the builds
[root]# groupadd builder
[root]# useradd -g builder builder
OpenSSL 1.1.1 버전 다운로드
[root]# wget https://www.openssl.org/source/openssl-1.1.1l.tar.gz
[root]# tar zxvf openssl-1.1.1l.tar.gz -C /usr/local/src/
OpenSSL 1.1.1 빌드 및 설치
[root]# cd /usr/local/src/openssl-1.1.1l
[root]# ./config --prefix=/usr/local/openssl-1.1.1l
[root]# make ; make install
ld.so.conf 파일 내용 추가
[root]# vi /etc/ld.so.conf
/usr/local/openssl-1.1.1l/lib
[root]# ldconfig
<-- 내용 추가 후 ldconfig 명령어 실행
* CentOS8 버전의 경우 에러가 발생 할 수도 있습니다 에러 발생할 경우 생략 합니다.
버전 확인 및 경로 변경
[root]# /usr/local/openssl-1.1.1l/bin/openssl version
OpenSSL 1.1.1l 24 Aug 2021
[root]# mv /bin/openssl /bin/openssl.1.0.2k-fips
<-- 기존 버전 rename 하여 백업을 합니다.
[root]# ln -s /usr/local/openssl-1.1.1l/bin/openssl /bin/openssl
<-- 심볼링크 생성
Config&Build
SRPM 설치
• CentOS 7
[root]# rpm -ivh http://nginx.org/packages/mainline/centos/7/SRPMS/nginx-1.19.6-1.el7.ngx.src.rpm
• CentOS 8 다운로드 경로
http://nginx.org/packages/mainline/centos/8/SRPMS/
Configuration
[root]# sed -i "s|--with-http_ssl_module|--with-http_ssl_module \
--with-openssl=/usr/local/src/openssl-1.1.1l \
--with-openssl-opt=enable-tls1_3 |g" \
/root/rpmbuild/SPECS/nginx.spec
Build
[root]# rpmbuild -ba /root/rpmbuild/SPECS/nginx.spec
Build 된 패키지 설치
[root]# cd /root/rpmbuild/RPMS/x86_64/
[root]# rpm -ivh nginx-1.19.6-1.el7.ngx.x86_64.rpm
버전 확인
[root]# nginx -V
nginx version: nginx/1.19.6
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.1.1l 22 Sep 2020
TLS SNI support enabled
이어지는 글
연관된 다른 글
- CentOS 에 Apache PHP MySQL 연동 설치 포스팅
- 우분투 환경에서 Apache PHP MySQL 연동 설치 포스팅
- 우분투 환경에서 Nginx PHP MariaDB 연동 설치 포스팅
- Nginx 에 ModSecurity 설치 - Nginx 웹 방화벽 / WAF
- CentOS 8 버전 지원 종료 및 정책 변경 안내 - Rocky Linux 소개
- CentOS 8 환경에서 Nginx + PHP-FPM + MariaDB 구성
Principal DBA(MySQL, AWS Aurora, Oracle)
핀테크 서비스인 핀다에서 데이터베이스를 운영하고 있어요(at finda.co.kr)
Previous - 당근마켓, 위메프, Oracle Korea ACS / Fedora Kor UserGroup 운영중
Database 외에도 NoSQL , Linux , Python, Cloud, Http/PHP CGI 등에도 관심이 있습니다
purityboy83@gmail.com / admin@hoing.io