카이도스의 Tech Blog
Http2 Apache Module 설치 본문
728x90
반응형
Apache HTTP2 Module 설치
■ 개요
'HTTP/2'는 웹 브라우저와 서버간 통신하는데 사용되는 프로토콜로, 표준 프로토콜인 HTTP/1.1 보다 속도나 보안적으로 향상된 기능을 제공합니다. 고객사에서 요청이 있을 경우에 참고하여 주시기 바랍니다.
|
■ 관련정보
- 테스트 환경
OS : Centos 7
Apache : 2.4.43
|
■ 설치 및 사용조건
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 방식을 권장합니다.
|
1. libnghttp2 설치
Apache mod_http2를 설치하기 위해서는 libnghttp2 1.2.1 이상이 설치되어 있어야 합니다.
→ CentOS 6 OS에서도 yum 저장소에서 1.6.0 버전이 설치되어 http2 모듈 사용이 가능합니다.
# yum install epel-release
# 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
|
2. Apache 컴파일 및 설치
# 컴파일 옵션
# ./configure \
--prefix=/usr/local/httpd2 \
--enable-modules=all \
--enable-charset-lite \
--enable-so \
--with-included-apr \
--with-mpm-shared=all \
--enable-http2 \
--enable-ssl \
--with-ssl=/usr/local/openssl \
--with-mpm=event
# make ; make install
|
3. HTTP/2 활성화
HTTP/2는 SSL 인증서 설치하여야 사용 가능합니다.
(1) 전체 도메인 활성화
# httpd.conf 파일에 추가 및 확인
LoadModule http2_module modules/mod_http2.so
<IfModule http2_module>
ProtocolsHonorOrder On
Protocols h2 h2c http/1.1
</IfModule>
ProtocolsHonorOrder : 'Protocols' 에 나열한 순서대로 우선순위를 결정한건지 선택하는 옵션 (on|off)
Protocols : 호스트에서 지원되는 프로토콜 목록을 지정하는 옵션.
# SSL 인증서 미사용
# SSL 인증서 사용
|
(2) 개별 도메인 활성화
# 분리되어 잇는 VirtualHost 섹션에 추가.
<VirtualHost *:443>
ServerAdmin pjh@test.com
DocumentRoot /home/test/docs
ServerName test.shop
CustomLog logs/tes.shop_log common
ErrorLog logs/test.shop-error_log
ProtocolsHonorOrder On
Protocols h2 http/1.1
SSLEngine on
SSLCertificateFile "/usr/local/apache/conf/certs/test.shop/test_shop.crt"
SSLCertificateKeyFile "/usr/local/apache/conf/certs/test.shop/test_shop_SHA256WITHRSA.key"
SSLCACertificateFile "/usr/local/apache/conf/certs/test.shop/AAACertificateServices.crt"
SSLCertificateChainFile "/usr/local/apache/conf/certs/test.shop/rsa-dv.chain-bundle.pem"
</VirtualHost>
# test.shop 도메인 ( Protocols 설정 추가 )
test.shop 12048 IP - - [06/Dec/2021:11:02:59 +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"
# test.shop 도메인 ( 별도 설정 없음 )
test.shop 12048 IP - - [06/Dec/2021:11:03:23 +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"
|
4. HTTP/2 활성화 테스트 방법
(1) openssl을 이용한 테스트방법으로, openssl 1.0.2 이상에서 테스트 가능합니다.
# http2 프로토콜 활성화 했을경우 리턴값
# openssl s_client -alpn h2 -connect test.shop:443 | grep ALPN
verify return:1
ALPN protocol: h2
# http2 프로토콜 활성하지 않았을 경우 리턴값
# openssl s_client -alpn h2 -connect test.shop:443 | grep ALPN
verify return:1
ALPN protocol: http/1.1
|
(2) 구글 개발자툴(F12)를 통한 확인
# http2 프로토콜 활성화 했을경우
# http2 프로토콜 활성하지 않았을 경우
|
(3) 체크사이트에서 확인
- URL : httpd2.pro
# http2 프로토콜 활성화 했을경우
# http2 프로토콜 활성하지 않았을 경우
|
728x90
반응형
'서버작업' 카테고리의 다른 글
mysqlcheck 사용 (db, mysql) 복구, 최적화 (0) | 2022.08.04 |
---|---|
centos7 이슈 (xinetd)Can't open PID file /var/run/xinetd.pid (yet?) after start: No such file=>/var/log/messages|Connection closed by foreign host. (0) | 2022.08.04 |
Rescue 모드를 이용한 GRUB 복구방법 (0) | 2022.08.04 |
젠서버(가상화) ISO 만들기, 젠서버 복구 (0) | 2022.08.04 |
IDC 네트워크 장애 (0) | 2022.08.04 |
Comments