Nginx 啟用 BoringSSL的配置方法
本文介紹以 BoringSSL 作為 Nginx 加密庫的配置方法。
BoringSSL 是由谷歌從 Openssl 中抽出來后獨(dú)立發(fā)展的作品,是 Google、Cloudflare 等大牌的御用。
BoringSSL 有優(yōu)點(diǎn)也有缺點(diǎn):優(yōu)點(diǎn)是它原生提供 加密算法等價(jià)組 (具體我之后會(huì)寫文章介紹)支持,并且對(duì) tls1.3-draft23 支持較為不錯(cuò);而缺點(diǎn)是不能在 Nginx 下啟用 tls1.3 協(xié)議,且 BoringSSL 自身容易編譯失敗。
本文介紹使用 BoringSSL 替代 Openssl 作為 Nginx 加密庫的方式。
BoringSSL
首先你需要把 BoringSSL 編譯出來。建議編譯所用主機(jī)配置 2G 及以上內(nèi)存,因?yàn)?cmake 相當(dāng)消耗內(nèi)存。以下步驟可能比較多,請(qǐng)按順序一步步執(zhí)行:
# 建立一個(gè)目錄,我們的工作都在這里進(jìn)行 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
使用以下參數(shù)來編譯 Nginx:
# 使用 --with-openssl 指定 BoringSSL 路徑 # 這里并沒有變成 "--with-boringssl" ./configure ... --with-openssl=/home/nginx-installation/boringssl # 在 configure 后,要先 touch 一下,才能繼續(xù) make touch /home/nginx-installation/boringssl/.openssl/include/openssl/ssl.h make make install
把 Nginx 編譯出來后,查看參數(shù)你會(huì)看到:
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
發(fā)現(xiàn)了嗎?里面耀眼的 BoringSSL 字樣。
Cipher Suite
雖說把 OpenSSL 換成了 BoringSSL,其實(shí)加密套件的寫法還是差不多一樣的。你可以這樣寫:
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';
當(dāng)然,如果你想用上 BoringSSL 的 等價(jià)組 特性的話,可以改成這樣:
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';
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Windows下使用?Nginx?搭建?HTTP文件服務(wù)器?實(shí)現(xiàn)文件下載功能
Nginx?是一款輕量級(jí)的?HTTP?服務(wù)器,采用事件驅(qū)動(dòng)的異步非阻塞處理方式框架,這讓其具有極好的?IO?性能,時(shí)常用于服務(wù)端的反向代理和負(fù)載均衡,這篇文章主要介紹了Windows下使用?Nginx?搭建?HTTP文件服務(wù)器實(shí)現(xiàn)文件下載功能,需要的朋友可以參考下2023-03-03
解決nginx:[emerg]?getpwnam(“nginx“)failed報(bào)錯(cuò)問題
編譯安裝nginx時(shí),啟動(dòng)服務(wù)報(bào)錯(cuò)nginx:[emerg]getpwnam("nginx")failed,原因是沒有為nginx創(chuàng)建用戶,解決方法是創(chuàng)建一個(gè)nginx用戶,該用戶是你在編譯時(shí)指定的用戶2025-02-02
Nginx由于反向代理導(dǎo)致502錯(cuò)誤的原因與解決
這篇文章主要為大家詳細(xì)介紹了Nginx由于反向代理導(dǎo)致502錯(cuò)誤的原因和相關(guān)的解決方法,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下2025-04-04
Nginx性能優(yōu)化之Gzip壓縮設(shè)置詳解(最大程度提高頁面打開速度)
這篇文章主要介紹了Nginx性能優(yōu)化之Gzip壓縮設(shè)置詳解(最大程度提高頁面打開速度),需要的朋友可以參考下2022-01-01

