너무 오래전에 word파일에다 적어놨던거 겨우찾아가지고… 나중에 세팅한번 해보면서 다시 정리해야겠다
목차
Nginx – quic http3 설치방법... 2
Centos 7.2.1511. 10
Nginx – quic http3 설치방법
- Nginx
curl -O https://nginx.org/download/nginx-1.19.3.tar.gz
tar xzvf nginx-1.19.3.tar.gz
cd nginx-1.19.3.tar.gz
patch –p01 < ../quiche/extras/nginx/nginx-1.16.patch
-
패치하여 http3 모듈 빌드
-
Nginx 모듈 빌드
./configure --with-debug \
--prefix=/usr/share/nginx \
-
-with-http_ssl_module \
-
-with-http_v2_module \
-
-with-http_v3_module \
--with-openssl=../quiche/deps/boringssl \
--with-quiche=../quiche \
- -sbin-path=/usr/sbin/nginx \
--modules-path=/usr/share/nginx/modules \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/run/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--user=www-data \
--group=www-data \
--with-threads \
--with-file-aio \
- -with-http_realip_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_slice_module \
--with-http_stub_status_module \
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
--without-select_module \
--without-poll_module \
--without-mail_pop3_module \
--without-mail_imap_module \
--without-mail_smtp_module \
--add-dynamic-module=../headers-more-nginx-module \
--build="quiche-$(git --git-dir=../quiche/.git rev-parse --short HEAD)" \
- -with-cc-opt="-I../boringssl/include" \
--with-ld-opt="-L../boringssl/build/ssl \
-L../boringssl/build/crypto"
make
make install
- Nginx config
- h3를 위한 최소한의 설정
http {
server {
listen 443 quic reuseport;
listen 443 ssl http2;
proxy_request_buffering off;
ssl_early_data on;
ssl_certificate /etc/ssl/mywebsite/fullchain.pem;
ssl_certificate_key /etc/ssl/mywebsite/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
add_header Alt-Svc 'h3-29=":443"; ma=2592000, h3-28=":443"; ma=2592000, H3-27=":443"; ma=2592000, h3-Q050=":443"; ma=2592000, h3-Q046=":443"; ma=2592000, h3-Q043=":443"; ma=2592000, quic=":443"; ma=2592000; v="46,43"';
}
} ----------------------------------------------------------------------- user www-data;
load_module modules/ngx_http_headers_more_filter_module.so;
worker_processes auto;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
gzip on;
server {
listen 80;
listen [::]:80;
server_name _;
access_log off;
error_log off;
return 301 https://yourdomain.com$request_uri;
}
server {
listen 443 quic reuseport default_server;
listen 443 ssl http2;
proxy_request_buffering off;
client_max_body_size 100M;
server_name yourdomain.com;
ssl_early_data on;
ssl_certificate /etc/letsencrypt/mywebsite/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/mywebsite/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
add_header Alt-Svc 'h3-29=":443"; ma=2592000, h3-28=":443"; ma=2592000, H3-27=":443"; ma=2592000, h3-Q050=":443"; ma=2592000, h3-Q046=":443"; ma=2592000, h3-Q043=":443"; ma=2592000, quic=":443"; ma=2592000; v="46,43"';
root /var/www/html/projek;
location '/.well-known/acme-challenge' {
default_type "text/plain";
root /var/www/html/projek;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_read_timeout 120;
fastcgi_param HTTP_IF_NONE_MATCH $http_if_none_match;
fastcgi_param HTTP_IF_MODIFIED_SINCE $http_if_modified_since;
}
}
}
- Boringssl
git clone https://boringssl.googlesource.com/boringssl
cd boringssl
mkdir build
cd build
cmake ..
make
- quiche 에 있지만 따로 필요할 시에
Nginx-quic 에서는 Openssl 대신 boringssl 을 사용한다
Quiche에 있어서 사용
- Quiche
git clone --recursive https://github.com/cloudflare/quiche
cd quiche
cargo build –examples
cargo test
- Nginx header modul
git clone https://github.com/openresty/headers-more-nginx-module.git
-
추가 모듈이 필요할시에
-
Nginx-common
apt-get install nginx-common
rm /usr/share/nginx/modules
-
없어도 정상 동작 했음
-
Os 패키지
apt-get update && apt-get upgrade -y && apt-get dist-upgrade -y
apt-get install dialog mercurial gcc-multilib git cmake g++
apt-get install curl
apt-get install libunwind-dev
-
필요한거만 install 하면 됨
-
Rustup(https://rustup.rs)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
-
인증된 도메인
-
기존 접속시 안전하지 않음으로 들어가지는 것처럼은 안되었고
기관에 인증을 받은 도메인만 접속 할 수 있었다.
테스트 당시
https://www.freenom.com/en/index.html?lang=en
무료도메인을 받은 뒤에
https://zerossl.com/ 이 싸이트에서 ssl 인증을 받았다
- 설치 후 테스트
1.http3check.net/ 에 도메인 입력 후 확인
2.개발자 도구 네트워크 탭에서 H3-29 프로토콜 확인
3.나오지 않을 시에 브라우저 quic 활성화 확인
크롬 브라우저 설정
- chrome://flags/#enable-quic
cmd
cd …. Chrome.exe 파일이 있는 디렉토리로 이동 후
-
exe --enable-quic --quic-version=h3-29 --origin-to-force-quic-on=junyoung93.cf:443 https://junyoung93.cf:443
-
참고 사이트
//docker에 debian os 이미지를 받아 설치하는 과정을 순차적으로 보여줌
https://pasuh.com/member/6/thread/144/nginx-http3-quic.html
https://www.youtube.com/watch?v=6eKl8FrS7UI
//nginx-quic 최소한의 설정으로 설치 하는 방법
https://github.com/cloudflare/quiche/tree/master/extras/nginx#readme
- 패키지 아무것도 없었을 때 centos 에서 설치했던 패키지들
yum install git
yum install patch
yum install -y httpd-devel pcre perl pcre-devel zlib zlib-devel GeoIP GeoIP-devel
yum -y install gcc g++ cpp gcc-c++ openssl openssl-devel gd gd-devel libxml2-devel bzip2-devel curl-devel libicu-devel libmcrypt libmcrypt-devel openldap openldap-devel libxslt-devel
yun install cmake(3.0 이상 홈페이지 따로 받아야함)
Centos 7.2.1511
1.참고
-
nginx-quic이 제대로 동작하려면 OpenSSL이 아닌 BoringSSl로 빌드해야합니다..
-
openssl ver 1.1.1 이상3 지원하는 버전
-
기관에 인증받은 도메인이 있어야 합니다.
-
테스트 했을 시에 (안전하지 않은 사이트)접근 불가
-
Make를 이용한 컴파일시0버전 이상이 필요합니다.
-
cmake 3 버전 이상
-
2021-07-16 기준 홈페이지 에서 따로 받았습니다.
-
Rust의 패기지 관리자Cargo quiche 빌드를 위해 필요합니다.
-
아래 설치 방법은 /tmp 경로에서 진행했습니다.
2.nginx 소스코드 다운로드
-
최신버전으로 다운로드 받으면 된다고 합니다.
-
tar xzvf nginx-1.19.3.tar.gz
-
git clone --recursive https://github.com/cloudflare/quiche
-
http3 빌드를 위한 quiche 클론
-
cd nginx-1.19.3
-
patch -p01 < ../quiche/extras/nginx/nginx-1.16.patch
-
3에서 받은 quiche 경로에 있는 nginx-1.16.patch (현재) 로 http3 모듈 활성화 합니다.
-
./configure \
--prefix=/tmp/nginx \
--build="quiche-$(git --git-dir=../quiche/.git rev-parse --short HEAD)" \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_v3_module \
--with-openssl=../quiche/deps/boringssl \
--with-quiche=../quiche
-
http3 모듈 활성화 후 nginx 에 빌드 합니다.
-
빌드시에 pcre 라이브러리가 필요하다고 해서
-
yum install pcre-devel 해주었습니다.
-
make
-
빌드된 nginx make 컴파일
-
실패했을 경우
-
Openssl 버전이1.1 인지 확인
-
지원하는 모듈중에3 이 있어야 합니다.
-
yum group install ‘Development Tools’
-
yum install perl-core zlib-devel –y
-
tar -xvzf openssl-1.1.1a.tar.gz
-
./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared
-
Make && make insatall
-
링크설정후 openssl version 으로 확인
-
참고 자료 : http://blog.plura.io/?p=9209
-
실패시에 cmake –-version 3버전 이상인지 확인
-
해당 사이트에서 3버전 이상 다운로드
-
tar -zxvf cmake-3.19.3.tar.gz
-
cd cmake-3.19.3
-
./bootstrap --prefix=/usr/local
-
Make
-
Make install
-
Quiche 빌드를 위한 cargo Rustup(https://rustup.rs)
-
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-
source $HOME/.cargo/env
-
nginx 빌드 확인
-
Prefix 빌드 경로에서 nginx –v quiche 확인
-
conf 파일 수정
-
필수항목
-
지시어 quic 또는 http3 사용후 reuseport
-
3
-
Ssl 인증서 경로
-
Header h3-29
-
Nginx 설정 확인
-
포트 확인
-
UDP 443 포트가 열린 것을 확인 했습니다.
-
만약 없을시에는 방화벽에서 열어주세요
http3 브라우저 접속
-
https://도메인 으로 접속 했을시에 프로토콜에 h3-29 확인
-
캐시 삭제