Nginx 启用 BoringSSL的配置方法
本文介绍以BoringSSL作为Nginx加密库的配置方法。
BoringSSL是由谷歌从Openssl中抽出来后独立发展的作品,是Google、Cloudflare等大牌的御用。
BoringSSL有优点也有缺点:优点是它原生提供加密算法等价组(具体我之后会写文章介绍)支持,并且对tls1.3-draft23支持较为不错;而缺点是不能在Nginx下启用tls1.3协议,且BoringSSL自身容易编译失败。
本文介绍使用BoringSSL替代Openssl作为Nginx加密库的方式。
BoringSSL
首先你需要把BoringSSL编译出来。建议编译所用主机配置2G及以上内存,因为cmake相当消耗内存。以下步骤可能比较多,请按顺序一步步执行:
#建立一个目录,我们的工作都在这里进行 mkdir-p/home/nginx-installation&&cd/home/nginx-installation #安装编译所需依赖 #BoringSSL需要Golang支持 apt-getinstall-ybuild-essentialmakecmakegolang #把BoringSSL源码克隆下来 gitclone--dep1https://boringssl.googlesource.com/boringssl&&cdboringssl #编译开始 mkdir-p/home/nginx-installation/boringssl/build/home/nginx-installation/boringssl/.openssl/lib/home/nginx-installation/boringssl/.openssl/include ln-sf/home/nginx-installation/boringssl/include/openssl/home/nginx-installation/boringssl/.openssl/include/openssl touch/home/nginx-installation/boringssl/.openssl/include/openssl/ssl.h cmake-B/home/nginx-installation/boringssl/build-H/home/nginx-installation/boringssl make-C/home/nginx-installation/boringssl/build cp/home/nginx-installation/boringssl/build/crypto/libcrypto.a/home/nginx-installation/boringssl/build/ssl/libssl.a/home/nginx-installation/boringssl/.openssl/lib
以上步骤完成后,就先把BoringSSL编译完成了。接下来要用--with-openssl把它提供给Nginx使用。
Nginx
使用以下参数来编译Nginx:
#使用--with-openssl指定BoringSSL路径 #这里并没有变成"--with-boringssl" ./configure...--with-openssl=/home/nginx-installation/boringssl #在configure后,要先touch一下,才能继续make touch/home/nginx-installation/boringssl/.openssl/include/openssl/ssl.h make makeinstall
把Nginx编译出来后,查看参数你会看到:
sudonginx-V builtbygcc4.9.2(Debian4.9.2) builtwithOpenSSL1.1.0(conpatible:BoringSSL)(runningwithBoringSSL) TLSSNIsupportenabled
发现了吗?里面耀眼的BoringSSL字样。
CipherSuite
虽说把OpenSSL换成了BoringSSL,其实加密套件的写法还是差不多一样的。你可以这样写:
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256ECDHE-ECDSA-CHACHA20-POLY1305ECDHE-RSA-AES128-GCM-SHA256ECDHE-RSA-CHACHA20-POLY1305ECDHE-ECDSA-AES256-GCM-SHA384ECDHE-RSA-AES256-GCM-SHA384ECDHE-ECDSA-AES128-SHA256ECDHE-RSA-AES128-SHA256';
当然,如果你想用上BoringSSL的等价组特性的话,可以改成这样:
ssl_ciphers '[ECDHE-ECDSA-AES128-GCM-SHA256|ECDHE-ECDSA-CHACHA20-POLY1305|ECDHE-RSA-AES128-GCM-SHA256|ECDHE-RSA-CHACHA20-POLY1305]ECDHE-ECDSA-AES256-GCM-SHA384ECDHE-RSA-AES256-GCM-SHA384ECDHE-ECDSA-AES128-SHA256ECDHE-RSA-AES128-SHA256';
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。