跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 用户
  • 群组
  • 搜索
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠

Set☆Fire

  1. 主页
  2. Software
  3. 为论坛使用 BoringSSL (Nginx + BoringSSL)的流程记录

为论坛使用 BoringSSL (Nginx + BoringSSL)的流程记录

已定时 已固定 已锁定 已移动 Software
nginx部署
1 帖子 1 发布者 7.2k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • BlueBlue_MasterB 离线
    BlueBlue_MasterB 离线
    BlueBlue_Master
    写于 最后由 BlueBlue_Master 编辑
    #1

    🤔中文 BoringSSL 介绍看这位大大文章 使用 BoringSSL 优化 HTTPS 加密算法选择

    imgur图片在中国大陆无法访问,本文以下图片可能无法加载。

    本章老旧没有更新,但依然具备些参考价值吧。


    超久之前(公元 2014),谷歌推出了 ChaCha20-Poly1305 ,chacha20 在精简指令集架构 CPU , ARM 平台上优势明显( ARMv8 之前),减少等待时间,更为省电。然而这都是之前的事情。AMRv8 已经支持 AES 指令集,也就是说目前 chacha20 的速度优势已经不太明显。

    现在 openssl 和 LibreSSL 都能启用 chacha20 (使用最新版)。但是会出现只要客户端支持,无论是桌面端还是移动端都会使用 chacha20 的情况。那么就需要 BoringSSL 的 "等价加密算法组(Equal preference cipher groups)" ,可以自动使用较为适合的算法。

    桌面端 Chrome
    PCchrome选择的算法.png

    手机端 chrome
    0_1484282433060_Screenshot_2017-01-13-12-34-38.jpeg

    虽然前面说了目前 chacha20 速度优势已经不明显,但还是折腾玩一下。:bubble_funny: 正如官方页面所说,BoringSSL 稳定性无法保证。它也不支持 OCSP Stapling .


    准备启用 BoringSSL

    服务器系统 Centos7 ,
    web 程序使用 nginx , 截至发文前最新版本 Nginx-1.11.8

    下载 Nginx-1.11.8 来更新 nginx

    wget http://nginx.org/download/nginx-1.11.8.tar.gz
    tar -zxvf nginx-1.11.8.tar.gz
    

    BoringSSL

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

    安装 golang ,如果在编译 BoringSSL 时遇到缺少 golang 的问题

    yum install golang cmake
    

    编辑安装 BoringSSL .
    其他详细介绍查看 https://boringssl.googlesource.com/boringssl/+/HEAD/BUILDING.md

    进入 BoringSSL 目录

    cd boringssl
    

    创建 build 目录,并且进入

    mkdir build && cd build
    

    编译后返回 BoringSSL 主目录

    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

    一些准备,查看 Nginx 目前版本和上一次编译参数用来备忘 (如果已经安装过 Nginx)

    nginx -V
    

    关闭 nginx 后开始重新编译安装 nginx ,注意 --with-openssl 要指向 BoringSSL 目录。
    这里参数要完整一些

    cd nginx-1.11.8
    
    ./configure  --prefix=/usr/local/nginx \
    --sbin-path=/usr/local/sbin/nginx \
    --conf-path=/etc/nginx/nginx.conf \
    --error-log-path=/var/log/nginx/error.log \
    --http-log-path=/var/log/nginx/access.log \
    --pid-path=/run/nginx.pid \
    --user=nginx \
    --group=nginx \
    --lock-path=/run/lock/subsys/nginx \
    --with-http_ssl_module  \
    --with-http_v2_module \
    --with-http_stub_status_module \
    --with-http_gzip_static_module \
    --without-mail_pop3_module \
    --without-mail_imap_module \
    --without-mail_smtp_module \
    --with-mail_ssl_module \
    --with-http_mp4_module \
    --with-http_flv_module \
    --with-http_realip_module \
    --with-http_gunzip_module \
    --with-http_image_filter_module \
    --with-file-aio \
    --with-http_addition_module \
    --with-openssl=/root/boringssl 
    

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

    make
    make install
    

    nginx -V 查看版本是否被更新,然后重新配置 .conf 文件 ,加入等价加密算法

    server {
        listen 443 ssl http2 fastopen=3;
        server_name www.set-fire.com;      
        ssl on;
        ssl_certificate /.../fullchain.pem;
        ssl_certificate_key /.../privkey.pem;
        ssl_dhparam  /.../dhparams.pem;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        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;
        ssl_prefer_server_ciphers on;
    
    ...
    }
    

    大概完成配置。如果我没有忘记一些步骤...

    启动 nginx ,看看有没有出错:bubble_funny:

    当你凝视柱子的时候,柱子也在注视着你

    1 条回复 最后回复
    0
    回复
    • 在新帖中回复
    登录后回复
    • 从旧到新
    • 从新到旧
    • 最多赞同


    • 登录

    • 没有帐号? 注册

    • 登录或注册以进行搜索。
    • 第一个帖子
      最后一个帖子
    0
    • 版块
    • 最新
    • 标签
    • 热门
    • 用户
    • 群组
    • 搜索