如何在FreeBSD 12上的Apache中启用TLS 1.3

・7 分钟阅读

使用不同的系统?

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

要求

  • 运行FreeBSD 12的云计算实例,
  • 有效域名和正确配置的A/AAAA/CNAME DNS记录,
  • 有效的TLS证书,我们会从Let's Encrypt获取一个,
  • Apache版本2.4.36或更高版本,
  • 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

安装apache

Apache在版本2.4.36中增加了对TLS 1.3的支持,FreeBSD12系统附带了Apache和OpenSSL,它们支持现成的TLS 1.3,因此,不需要构建自定义版本。

下载并安装Apache的最新2.4分支通过pkg包管理器。


sudo pkg install -y apache24

检查版本。


httpd -v
# Server version: Apache/2.4.38 (FreeBSD)

启动并启用Apache 。


sudo sysrc apache24_enable="yes"
sudo service apache24 start

配置Apache for TLS 1.3

既然已经成功安装了Apache,就可以将它配置成在服务器上使用TLS 1.3了。

注意:在FreeBSD中,mod_ssl模块在包和端口中默认是启用,

运行 sudo vim /usr/local/etc/apache24/httpd.conf 通过取消注释来包含SSL模块 LoadModule ssl_module libexec/apache24/mod_ssl.so


#LoadModule ssl_module libexec/apache24/mod_ssl.so

运行 sudo vim /usr/local/etc/apache24/Includes/example.com.conf ,并使用以下基本配置填充文件。


Listen 443
<VirtualHost *:443>
 ServerName example.com
 SSLEngine on
 SSLProtocol all -SSLv2 -SSLv3
 # RSA
 SSLCertificateFile"/etc/letsencrypt/example.com/fullchain.pem"
 SSLCertificateKeyFile"/etc/letsencrypt/example.com/private.key"
 # ECC
 SSLCertificateFile"/etc/letsencrypt/example.com_ecc/fullchain.pem"
 SSLCertificateKeyFile"/etc/letsencrypt/example.com_ecc/private.key"
</VirtualHost>

保存文件并退出: +W+Q。

检查配置。


sudo service apache24 configtest

重新加载Apache 。


sudo service apache24 reload

在网页浏览器中通过HTTPS协议打开你的站点,要验证TLS 1.3,你可以使用浏览器开发工具或SSL Labs服务。

你已在FreeBSD服务器上成功地启用了TLS 1.3。

Hrh profile image