前言
之前建站的时候就配过了一次了,刚好新人任务有要求,就简单记录一下
https由于传输原理的问题会比http要慢,在2012年谷歌提出SPDY的方案来应对https存在的延迟等问题。http2相比于https有了一些新特性。于是这里配置http2.
配置http2
使用免费的Let’s Encrypt,在官网中会告诉你用 Certbot ACME 客户端自动配置,进去选择自己的nginx版本和系统版本就好了。页面上会出现操作步骤。
1 | sudo snap install core; |
1 | sudo snap install --classic certbot |
1 | sudo ln -s /snap/bin/certbot /usr/bin/certbot |
1 | sudo certbot --nginx |
于是certbot就自动配置好nginx
使用这个来自动续订:
1 | sudo certbot renew --dry-run |
我们也可以手动折腾一下。
申请证书:
1 | sudo certbot --nginx --register-unsafely-without-email certonly |
选择对应的nginx配置文件(注意,它需要是正确可用的配置,可以执行sudo nginx -t
来检查配置),此后letsencrypt证书将会自动生成在/etc/letsencrypt/live/your_conf_file
中。
基本配置:
1 | server { |
此时https已配置完成。
禁止不安全的协议:
1 | ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4'; |
启用HSTS:
1 | ssl_prefer_server_ciphers on; |
1 | server { |
其他的安全配置
缓存连接凭据:
1 | ssl_session_cache shared:SSL:20m; |
配置赫尔曼密钥:
1 | openssl dhparam -out dhparam.pem 2048 #在 ssh 运行, openssl 生成 2048 位的密钥而不是当作参数写入 nginx.conf 文件 |
OCSP 缝合
1 | ssl_stapling on; |
泛域名证书
certbot支持泛域名证书了
1 | certbot certonly --preferred-challenges dns --manual -d *.k8s.ryaoknw.site --server https://acme-v02.api.letsencrypt.org/directory |