使用 BoringSSL 优化 HTTPS 加密算法选择

文章参考:https://imququ.com/post/optimize-ssl-ciphers-with-boringssl.html

前言

很多做网站的朋友可能都会发现,一旦开启HTTPS之后,访问速度会变得很慢,因为多了一层加密的步骤。除了常规的使用 HTTP/2 之外,我们还能不能给https提速一把呢?答案是肯定的。各位都清楚SS程序中有两个加密算法比较引起我们的注意,一个是AES-256-CFB,还有个就是ChaCha20。ChaCha20在基于ARM构架的手机等设备上速度快,省电。所以我们就考虑把HTTPS网站的加密方式也换成ChaCha20来加快速度。其实不然,很多的设备CPU都带一种名为AES-NI的高端组件,他可以更快的处理AES的处理速度。在这些设备上的速度明显快过Chacha20。 @bobo 大佬曾经说过,不要盲目的追求Chacha20,带有AES-NI的设备反而是AES优势更大。

使用 BoringSSL 优化 HTTPS 加密算法选择

本篇文章来介绍下使用BoringSSL + Nginx 来使得https网站同时支持 AES-GCM 加密算法和 Chacha20-Poly305算法,并且自动检测设备是否支持AES-NI。

准备阶段

本篇文章以lnmp.org配置的一键LNMP包为例,首先进入源代码文件夹,找到nginx的源码包:

cd lnmp1.4/src
tar -xf nginx-1.10.3.tar.gz

使用 BoringSSL 优化 HTTPS 加密算法选择

编译BoringSSL

然后我们下载BoringSSL(谷歌出品)并且编译:

git clone https://boringssl.googlesource.com/boringssl
export CFLAGS="-Wno-error"
cd boringssl
mkdir build && cd build && cmake ../ && make && cd ../
mkdir -p .openssl/lib && cd .openssl && ln -s ../include . && cd ../
cp build/crypto/libcrypto.a build/ssl/libssl.a .openssl/lib
cd ../

编译Nginx

完成后我们进入Nginx准备编译:

cd nginx-1.10.3

我们准备下Nginx编译参数,使用

nginx -V

找到 configure 后面的 –,把他们复制下来。使用 BoringSSL 优化 HTTPS 加密算法选择

然后我们修改下,把 –with-openssl=../openssl-1.0.2k 改成 –with-openssl=../boringssl

然后把所有的其他的都一起粘贴在 ./configure 后面运行:

./configure + 你刚刚修改完的完整参数

比如我这里就是
使用 BoringSSL 优化 HTTPS 加密算法选择

等预编译好了之后运行:

touch ../boringssl/.openssl/include/openssl/ssl.h
make
make install

至此,Nginx就编译安装完成并且启用BoringSSL了~

修改虚拟主机配置文件

进入虚拟主机配置目录:

cd /usr/local/nginx/conf/vhost

修改你想修改的的那个https站点文件,把其中的

ssl_ciphers ###########这里一堆东西######;

改成

ssl_ciphers [ECDHE-ECDSA-AES128-GCM-SHA256|ECDHE-ECDSA-CHACHA20-POLY1305]:[ECDHE-RSA-AES128-GCM-SHA256|ECDHE-RSA-CHACHA20-POLY1305]:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:DES-CBC3-SHA;

然后保存,重启Nginx就好啦~

下面是在移动端和电脑端加密方式的区别,可以看到已经成功应用最适合的加密方式了。

使用 BoringSSL 优化 HTTPS 加密算法选择

原创文章,作者:雨落无声,如若转载,请注明出处:https://www.zhujiboke.com/2017/04/443.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

评论列表(1条)

  • YouB
    YouB 2017年4月7日 上午8:09

    👿 胸弟,你得代码高亮里面的标签关键字也出问题啦
    图片加个水印吧,防止被盗 :mrgreen:

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息