Nginx 启用 BoringSSL的配置方法
时间:2019-04-13
本文章向大家介绍Nginx 启用 BoringSSL的配置方法,主要包括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-get install -y build-essential make cmake golang # 把 BoringSSL 源码克隆下来 git clone --dep 1 https://boringssl.googlesource.com/boringssl && cd boringssl # 编译开始 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 make install
把 Nginx 编译出来后,查看参数你会看到:
sudo nginx -V built by gcc 4.9.2 (Debian 4.9.2) built with OpenSSL 1.1.0 (conpatible: BoringSSL) (running with BoringSSL) TLS SNI support enabled
发现了吗?里面耀眼的 BoringSSL 字样。
Cipher Suite
虽说把 OpenSSL 换成了 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-SHA384 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-SHA256 ECDHE-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-SHA384 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-SHA256 ECDHE-RSA-AES128-SHA256';
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
- 100w条记录分页,可以有多快?—— DataReader分页与SQL语句分页的对比测试(在线演示)
- Mimikatz小实验:黄金票据+dcsync
- 【自然框架】n级下拉列表框的原理
- 【自然框架】分享 n级联动下拉列表框
- GSM Hacking Part ②:使用SDR捕获GSM网络数据并解密
- 【自然框架】之数据访问 —— 再小的类库也需要设计。
- 【自然框架】之表单控件(一)实体类(Class)VS 字典(Dictionary)
- 跨平台后门Mokes现已加入OS X豪华午餐
- 【问底】严澜:数据挖掘入门——分词
- 机器学习-简单线性回归教程
- NSA(美国国安局)泄漏Exploit分析
- 详解Windows Shim的攻防利用
- 基于Github的源码白盒扫描工具Raptor
- 把业务逻辑变成数据结构和SQL语句的例子。自然架构改成自然框架
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 配合JAVA的AJAX使用
- 手把手教你,嘴对嘴传达------Apache网页优化
- jQuery通过Ajax实现请求后台接口数据
- Git常规操作
- 手把手教你,嘴对嘴传达 ----源码编译安装部署LAMP平台(LAMP平台与编译安装详解,Apache,MySQL与PHP源码编译安装,LAMP平台搭建论坛)
- Vue点击切换样式
- ElementUI引入到vue项目开发
- 手把手教你,嘴对嘴传达------Apache(安全优化防盗链、隐藏版本信息)
- spring框架应用系列三:切面编程(带参数)
- 排障集锦:九九八十一难之第六难!(98)Address already in use: AH00072: make_sock: could not bind to address ::80
- Vue页面中引用自定义组件
- Vue如何引用Vant组件
- js表单验证工具包
- 手把手教你,嘴对嘴传达------Nginx网站服务(访问状态统计,基于域名,端口,IP的虚拟web主机访问)
- lib-flexible引入到Vue做移动端rem布局