■ 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 |