参考资料:
编译Nginx使博客支持QUIC-HTTP/3 | 无二自留地https://111111.online/posts/nginx_http3.htmllinux下生成https的crt和key证书 - ㄓㄤㄑㄧㄤ - 博客园今天在配置kibana权限设置时,kibana要求使用https链接。 于是总结了一下linux下openssl生成 签名的步骤: x509证书一般会用到三类文,key,csr,crt Key 是私用https://www.cnblogs.com/azhqiang/p/8177443.html环境:Ubuntu 18.04
简介
随着技术的发展,QUIC,HTTP3渐渐向我们走来。本文算是笔者的一个记录贴,因为实验的需要,需要实现基于QUIC的直播或者点播,因为对QUIC和HTTP3的不熟悉,所以开贴一点一点记录相关技术的实现。
QUIC
TBD
HTTP3
TBD
部署
本文通过部署Nginx官方的QUIC分支来实现的浏览器和nginx-quic服务器粗略的HTTP3通信。
1、下载BoringSSL
BoringSSL 是由谷歌开发,从 OpenSSL 中分离的一个分支。BoringSSL 是 Chrome/Chromium、Android(但它不是 NDK 的一部分)和许多其他应用程序/程序中的 SSL 库。
由于nginx quic版本使用了新的tls1.3协议,需要openssl支持quic,但目前的openssl版本没有对应的支持,所以这里使用google的boringssl。
## 创建目录
$ mkdir NginxWithQuic
$ cd NginxWithQuic
## 下载代码
$ git clone https://github.com/google/boringssl.git
## 编译代码
$ cd boringssl
$ mkdir build
$ cd build
$ cmake ..
$ make
2、下载Nginx的QUIC版
#在NginxWithQuic的目录下
## 下载代码
$ hg clone -b quic https://hg.nginx.org/nginx-quic
##或直接去官网下载
##地址:http://hg.nginx.org/nginx-quic
$ cd nginx-quic
## 配置
## 可以对服务器配置额外的模块,详情见nginx-quic目录下的README文件
$ ./auto/configure --with-debug --with-http_v3_module \
--with-cc-opt="-I../boringssl/include" \
--with-ld-opt="-L../boringssl/build/ssl \
-L../boringssl/build/crypto"
$ make
## make install是为了把文件打入指定路径,非必须执行
$ make install
3、对编译好的nginx进行配置,启动
进入/usr/local/nginx/conf/目录对nginx.conf进行配置、启动服务
服务器配置nginx.conf:
events {
worker_connections 1024;
}
http {
log_format quic '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" "$quic"';
access_log logs/access.log quic;
server {
# for better compatibility it's recommended
# to use the same port for quic and https
listen 8443 http3 reuseport;
listen 8443 ssl;
ssl_certificate server.crt;
ssl_certificate_key server.key;
ssl_protocols TLSv1.3;
location / {
# required for browsers to direct them into quic port
add_header Alt-Svc 'h3=":8443"; ma=86400';
}
}
}
生成密钥:
见linux下生成https的crt和key证书 - ㄓㄤㄑㄧㄤ - 博客园,将生成的密钥server.crt和server.key放在/usr/local/nginx/conf/目录下
启动服务:
cd /usr/local/nginx/sbin/
##运行配置好的服务器
./nginx
4、访问服务器
使用火狐对服务器进行访问
首先在火狐地址栏输入:about:config
然后查找
network.http.http3.enabled,把false改为true,重启浏览器
在浏览器输入127.0.0.1:8443,进入,抓包,即可发现是HTTP3的请求包
(ps 有时候会是http1.1,我怀疑是缓存导致的,重启浏览器好像就可以了)
5、优化
TBD
6、nginx-quic-rtmp
TBD