nginx+OpenSSL 实现 X25519 for TLS 与 Chacha20-Poly1305 加密
2016年4月17日
X25519 已经标准化了,Chrome 50 开始支持 X25519 for TLS 了,正好 OpenSSL 1.1.0 也开始支持 X25519 了。本文将演示如何在 macOS 下安装 OpenSSL 1.1.0, 并配置 nginx 使用 X25519, 作为 OpenSSL 1.1.0 的另一福利:Chacha20-Poly1305, 将一并演示如何在 nginx 中选择 Chacha20-Poly1305 作为 ssl_cipher.
- UPDATE
给 homebrew 提了一个 pull request, 因此只要运行
1 | brew install nginx --devel |
安装的版本就自动带 OpenSSL 1.1.0 了。下面的内容只作为存档使用。
安装 openssl 1.1.0
1
brew install openssl@1.1
修改 nginx receipt
1
brew edit nginx
编辑 43 行的
openssl = Formula["openssl"]
为openssl = Formula["openssl@1.1"]
安装 nginx
1
brew install --build-from-source --devel nginx
在站点配置中使用下面的 SSL Directives
1
2
3ssl_ciphers CHACHA20:AES128:AES256:GCM:!DH:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS;
ssl_prefer_server_ciphers on;
ssl_ecdh_curve X25519;重启 nginx 使配置生效
1
nginx -s reload
如果你在中国大陆的网络环境内无法安装,请检查是否已经解决 DNS 污染的问题。
本文在打字中参考了在HTTPS加密连接中使用CHACHA20-POLY1305加密方法一文,在此感谢作者对使用 CHACHA20-POLY1305 的探讨。