Nginx 学习笔记 (a0) – 开启 HTTP/2, TLS 1.3 和 HSTS

不过瘾?再折腾 HTTP/2 、TLS 1.3 和 HSTS,力求在 SSL Server Test 达到 A+!

1) 安装新版 OpenSSL (新版本)。要启用 TLS 1.3,起码得 1.1.1 以上才行。

cd /usr/local/src
wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz && tar zxf openssl-1.1.1d.tar.gz && cd openssl-1.1.1d

./config --prefix=/usr/local/openssl
make && make install

2) 替换掉旧版,尔后以 openssl version 判断是否升级完成。

mv /usr/bin/openssl /usr/bin/openssl.old
mv /usr/include/openssl /usr/include/openssl.old
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl

echo "/usr/local/openssl/lib/" >> /etc/ld.so.conf
ldconfig -v

3) nginx -V 列出现有的参数。追加参数 --with-openssl=../openssl-1.1.1d 后,重新编译 Nginx。

cd /usr/local/src/nginx-1.16.1

./configure \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_sub_module \
--with-openssl=../openssl-1.1.1d

make
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
cp objs/nginx /usr/local/nginx/sbin/nginx
make upgrade

4) 回去编辑 server.conf (至于 Cipher Suites 的部分,不妨参考下 Cloudflare 的配置)。另外提醒 HSTS 是浏览器端直接强制 HTTPS,而非 HTTP 301 重定向至 HTTPS,如不确定后续会否继续使用 HTTPS,请注释掉那行代码。

server {
    ...
    listen 443 ssl http2;
    ssl_protocols TLSv1.3;
    add_header Strict-Transport-Security 'max-age=63072000; includeSubDomains; preload';
    ...
}

⚠️ 如果前面使用的 Certbot,要么注释掉 include /etc/letsencrypt/options-ssl-nginx.conf;,要么不用加 ssl_protocols TLSv1.3;

扫码领红包

微信赞赏支付宝扫码领红包

发表回复

后才能评论