如何在FreeBSD 12的Nginx中启用TLS 1.3

TLS 1.3是传输层安全性(TLS)协议的版本,该协议于2018年作为RFC 8446中的建议标准发布。与以前的产品相比,它提供了安全性和性能方面的改进。

本指南将演示如何在FreeBSD 12上使用Nginx Web服务器启用TLS 1.3。

要求

  • 运行FreeBSD 12的Vultr Cloud Compute(VC2)实例。
  • 有效的域名和正确配置A/ AAAA/ CNAME为您的域DNS记录。
  • 有效的TLS证书。我们将从“加密”中获取一个。
  • Nginx版本1.13.0或更高版本。
  • OpenSSL版本1.1.1或更高版本。

在你开始之前

检查FreeBSD版本。

uname -ro
# FreeBSD 12.0-RELEASE

确保您的FreeBSD系统是最新的。

freebsd-update fetch install
pkg update && pkg upgrade -y

如果系统上没有必要的软件包,请安装它们。

pkg install -y sudo vim unzip wget bash socat git

使用您的首选用户名创建一个新用户帐户(我们将使用johndoe)。

adduser

# Username: johndoe
# Full name: John Doe
# Uid (Leave empty for default): <Enter>
# Login group [johndoe]: <Enter>
# Login group is johndoe. Invite johndoe into other groups? []: wheel
# Login class [default]: <Enter>
# Shell (sh csh tcsh nologin) [sh]: bash
# Home directory [/home/johndoe]: <Enter>
# Home directory permissions (Leave empty for default): <Enter>
# Use password-based authentication? [yes]: <Enter>
# Use an empty password? (yes/no) [no]: <Enter>
# Use a random password? (yes/no) [no]: <Enter>
# Enter password: your_secure_password
# Enter password again: your_secure_password
# Lock out the account after creation? [no]: <Enter>
# OK? (yes/no): yes
# Add another user? (yes/no): no
# Goodbye!

运行visudo命令并取消注释该%wheel ALL=(ALL) ALL行,以允许该wheel组的成员执行任何命令。

visudo

# Uncomment by removing hash (#) sign
# %wheel ALL=(ALL) ALL

现在,使用切换到新创建的用户su

su - johndoe

注意: 用您的用户名替换johndoe

设置时区。

sudo tzsetup

安装acme.sh客户端并从Let's Encrypt获得TLS证书

安装acme.sh

sudo pkg install -y acme.sh

检查版本。

acme.sh --version
# v2.7.9

为您的域获取RSA和ECDSA证书。

# RSA
sudo acme.sh --issue --standalone -d example.com --ocsp-must-staple --keylength 2048
# ECC/ECDSA
sudo acme.sh --issue --standalone -d example.com --ocsp-must-staple --keylength ec-256

注意: 用您的域名替换example.com命令。

创建目录以存储您的证书和密钥。我们将使用/etc/letsencrypt

sudo mkdir -p /etc/letsencrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc

安装证书并将其复制到/etc/letsencrypt目录。

# RSA
sudo acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem 
# ECC/ECDSA
sudo acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem

运行上述命令后,您的证书和密钥将位于以下位置:

  • RSA/etc/letsencrypt/example.com
  • ECC/ECDSA/etc/letsencrypt/example.com_ecc

安装Nginx

Nginx在版本1.13.0中添加了对TLS 1.3的支持。FreeBSD 12系统自带Nginx和OpenSSL,它们均支持TLS 1.3,因此无需构建自定义版本。

通过pkg软件包管理器下载并安装最新版本的Nginx主线。

sudo pkg install -y nginx-devel

检查版本。

nginx -v
# nginx version: nginx/1.15.8

检查编译了Nginx的OpenSSL版本。

nginx -V
# built with OpenSSL 1.1.1a-freebsd  20 Nov 2018

启动并启用Nginx。

sudo sysrc nginx_enable=yes
sudo service nginx start

配置Nginx

既然我们已经成功安装了Nginx,我们就可以对其进行适当的配置,以开始在服务器上使用TLS 1.3。

运行sudo vim /usr/local/etc/nginx/example.com.conf命令,并使用以下配置填充文件。

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;

  server_name example.com;

  # RSA
  ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/example.com/private.key;
  # ECDSA
  ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;

  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
  ssl_prefer_server_ciphers on;
}

保存文件并使用:+ W+ 退出Q

现在我们需要包含example.com.conf在主nginx.conf文件中。

运行sudo vim /usr/local/etc/nginx/nginx.conf并将以下行添加到http {}块中。

include example.com.conf;

注意指令的新TLSv1.3参数ssl_protocols。仅在启用Nginx服务器上的TLS 1.3时才需要此参数。

检查配置。

sudo nginx -t

重新加载Nginx。

sudo service nginx reload

要验证TLS 1.3,可以使用浏览器开发工具或SSL Labs服务。下面的屏幕快照显示了Chrome的“安全性”标签。

如何在FreeBSD 12的Nginx中启用TLS 1.3

如何在FreeBSD 12的Nginx中启用TLS 1.3

您已经在FreeBSD服务器上的Nginx中成功启用了TLS 1.3。TLS 1.3的最终版本于2018年8月定义,因此没有更好的时间开始采用这项新技术了。

留下評論

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息