编译boringssl

https://imququ.com/post/optimize-ssl-ciphers-with-boringssl.html

首先,获取编译所需的 Nginx 和 BoringSSL 源码,Nginx 从 1.7.4 开始支持 BoringSSL,这里我直接使用最新版:

BASHwget http://nginx.org/download/nginx-1.9.6.tar.gz
tar xzf nginx-1.9.6.tar.gz

git clone https://boringssl.googlesource.com/boringssl

现在,当前目录下应该有这两个子目录:

boringssl/
nginx-1.9.6/

确认无误后,还要做一些准备工作:

BASH# 安装编译 BoringSSL 所需的 Golang
sudo apt-get install golang

# 安装编译 Nginx 所需的工具和依赖库
sudo apt-get install build-essential libpcre3 libpcre3-dev zlib1g-dev

# 忽略编译过程中的 Warning(不加这个,编到一半会因为 Warning 太多无法继续)
export CFLAGS="-Wno-error"

编译 BoringSSL:

BASH# 进入 BoringSSL 源码根目录
cd boringssl

# 创建 build 目录并编译,完成后回到 BoringSSL 源码根目录
mkdir build && cd build && cmake ../ && make && cd ../

# 创建 .openssl 目录,并将库文件和编译后的文件放进去
mkdir -p .openssl/lib && cd .openssl && ln -s ../include . && cd ../
cp build/crypto/libcrypto.a build/ssl/libssl.a .openssl/lib

cd ../

现在可以编译 Nginx 了:

BASH# 进入 Nginx 源码根目录
cd nginx-1.9.6

# 指定使用 BoringSSL 作为 SSL 库
./configure --with-openssl=../boringssl --with-http_v2_module --with-http_ssl_module

# 修改时间,避免 Nginx 再次编译 BoringSSL
touch ../boringssl/.openssl/include/openssl/ssl.h

touch 后可以开始 make 和 make install 了。这期间可能还会遇到这样一个报错:

'SSL_R_BLOCK_CIPHER_PAD_IS_WRONG' undeclared

这是因为 BoringSSL 删掉了这个变量。找到报错文件 src/event/ngx_event_openssl.c 中对应的位置:

    || n == SSL_R_BLOCK_CIPHER_PAD_IS_WRONG                  /*  129 */

删掉这一行,或者加个判断都可以解决问题:

BASH#ifdef SSL_R_BLOCK_CIPHER_PAD_IS_WRONG
    || n == SSL_R_BLOCK_CIPHER_PAD_IS_WRONG                  /*  129 */
#endif

其他应该没什么问题了。make install 之前记得先停掉 nginx 服务,不然很可能需要手动杀死之前的 nginx 进程。一切妥当后,参考前文修改 ssl_ciphers 并启动服务,搞定收工!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值