■ HTTP/2 ?

'HTTP/2'는 웹 브라우저와 서버간 통신하는데 사용되는 프로토콜로, 표준 프로토콜인 HTTP/1.1 보다 속도나 보안적으로 향상된 기능을 제공합니다. 

 

■ 설치 및 사용 조건

1) Apache 2.4.17부터 HTTP/2 를 지원하였지만 보안취약점이 발견된것으로 확인되며, 패치된 Apache 2.4.26 이상 버전에서 사용을 권장드립니다.

2) 해당 모듈을 사용하기 위해서는 openssl-1.0.2 버전 이상이 필요합니다. Centos 6은 oepnssl-1.0.1이 기본적으로 설치되므로, 별도로 설치 해줘야 합니다.

3) 현재 대부분 브라우저에서 HTTP/2 프로토콜 이용의 조건으로 TLS Handshake를 전제하고 있어, SSL 인증서를 사용하여야 합니다.

4) HTTP/2 프로토콜 사용은 위해서는 아파치 event mpm을 사용해야 합니다.
→ 현재 prepork mpm에서는 호환성 문제와 알려지지 않은 버그가 존재하여, 아파치 공식 홈페이지에서도 event 방식을 권장합니다.

 

■ libnghttp2 설치

Apache mod_http2를 설치하기 위해서는 libnghttp2 1.2.1 이상이 설치되어 있어야 합니다.

→ CentOS 6 에서도 yum 저장소에서 1.6.0 버전이 설치되어 http2 모듈 사용이 가능합니다.

# yum install libnghttp2 libnghttp2-devel
# rpm -qa |grep http2
libnghttp2-devel-1.33.0-1.1.el7.x86_64
libnghttp2-1.33.0-1.1.el7.x86_64


# Centos 6
# yum list |grep http2
libnghttp2.i686 1.6.0-1.el6.1 epel
libnghttp2-devel.i686 1.6.0-1.el6.1 epel

 

■ Apache 설치

컴파일 옵션에 아래와 추가하여 컴파일 합니다.

--enable-http2
mod_http2를 사용하기 위한 옵션으로 추가해줍니다.


--with-ssl=/usr/local/openssl
Openssl을 사용하기 위한 옵션으로, Centos7에서 기본 설치되는 Openssl 버전은 1.0.2k로 생략해도 되는 옵션입니다.
다만, Centos 6 같은 경우 openssl 을 업그레이드 해야므로 위 옵션을 추가해줘야 합니다.

# ./configure \

--prefix=/usr/local/httpd2 \
--enable-modules=all \
--enable-charset-lite \
--enable-so \
--with-included-apr \
--with-mpm-shared=all \
--enable-http2 \
--with-ssl=/usr/local/openssl \
--with-mpm=event


# make
# make install

 

■ HTTP/2 활성화

# httpd.conf 파일에 추가 및 확인
LoadModule http2_module modules/mod_http2.so

ProtocolsHonorOrder On
Protocols h2 h2c http/1.1


ProtocolsHonorOrder : 'Protocols' 에 나열한 순서대로 우선순위를 결정한건지 선택하는 옵션 (on|off)
Protocols : 호스트에서 지원되는 프로토콜 목록을 지정하는 옵션.

 

HTTP/2는 SSL 인증서를 설치 후 사용 가능합니다.

아파치 웹로그로 예시를 보여드립니다.

# SSL 인증서 미사용
SEKK.hktest.shop 8323 - - [06/Dec/2021:10:24:35 +0900] "GET / HTTP/1.1" 200 6 "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"


SSL 인증서 사용
SEKK.hktest.shop 8959  - - [06/Dec/2021:10:27:19 +0900] "GET / HTTP/2.0" 200 6 "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"

 

■ HTTP/2 활성화 테스트 방법

1. openssl를 이용한 확인 ( openssl 1.0.2 이상 )

# http2 프로토콜 활성화 했을경우 리턴값
# openssl s_client -alpn h2 -connect SEKK.hktest.shop:443 | grep ALPN

verify return:1
ALPN protocol: h2


# http2 프로토콜 활성하지 않았을 경우 리턴값
# openssl s_client -alpn h2 -connect SEKK.hktest.shop:443 | grep ALPN
verify return:1
ALPN protocol: http/1.1

 

2. httpd2.pro 를 이용한 확인

# http2 프로토콜 활성화 했을경우

# http2 프로토콜 활성하지 않았을 경우

 

'Linux > Apache' 카테고리의 다른 글

GeoIP2(MaxMind) Apache Module 설치 및 DB 업데이트  (0) 2022.03.23
Apache 2.4.52 설치  (0) 2022.03.23

+ Recent posts