共计 4283 个字符,预计需要花费 11 分钟才能阅读完成。
TLS 1.3 是传输层安全性(TLS)协议的最新版本,它基于现有的 1.2 规范和适当的 IETF 标准:RFC 8446. 它提供了比其前代产品更强的安全性和更高的性能改进。
在本文中,我们将向您展示获取有效 TLS 证书的分步指南,并在 Apache 或 Nginx Web 服务器上托管的域上启用最新的 TLS 1.3 版本协议。
要求:
- Apache 2.4.37 或更高版本。
- Nginx 版本 1.13.0 或更高版本。
- OpenSSL 1.1.1 或更高版本。
- 具有正确配置的 DNS 记录的有效域名。
- 有效的 TLS 证书。
从 Let’s Encrypt 安装 TLS 证书
要从 Let’s Encrypt 获取免费的 SSL 证书,您需要在 Linux 系统上安装 Acme.sh 客户端以及一些所需的软件包,如图所示。
# apt install -y socat git [在 Debian/Ubuntu 上]
# dnf install -y socat git [在 RHEL/CentOS/Fedora 上]
# mkdir /etc/letsencrypt
# git clone https://github.com/Neilpang/acme.sh.git
# cd acme.sh
# ./acme.sh –install –home /etc/letsencrypt –accountemail your_email@example.com
# cd ~
# /etc/letsencrypt/acme.sh –issue –standalone –home /etc/letsencrypt -d example.com –ocsp-must-staple –keylength 2048
# /etc/letsencrypt/acme.sh –issue –standalone –home /etc/letsencrypt -d example.com –ocsp-must-staple –keylength ec-256
注意 :使用您的真实域名替换上述命令中的 example.com。
安装 SSL 证书后,您可以继续在您的域上启用 TLS 1.3,如下所述。
在 Nginx 上启用 TLS 1.3
正如我在上面的要求中提到的那样,从 Nginx 1.13 版本开始支持 TLS 1.3。如果您运行的是较旧的 Nginx 版本,则需要先升级到最新版本。
# apt install nginx
# yum install nginx
检查编译 Nginx 的 Nginx 版本和 OpenSSL 版本(确保 nginx 版本至少为 1.14,openssl 版本为 1.1.1)。
# nginx -V
样例输出
nginx version: nginx/1.14.1
built by gcc 8.2.1 20180905 (Red Hat 8.2.1-3) (GCC)
built with OpenSSL 1.1.1 FIPS 11 Sep 2018
TLS SNI support enabled
….
现在启动,启用并验证 nginx 安装。
# systemctl start nginx.service
# systemctl enable nginx.service
# systemctl status nginx.service
现在使用您喜欢的编辑器打开 nginx vhost 配置 /etc/nginx/conf.d/example.com.conf 文件。
# vi /etc/nginx/conf.d/example.com.conf
并找到 ssl_protocols 指令并在行尾添加 TLSv1.3,如下所示
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
# RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
# ECDSA
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.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;
}
最后,验证配置并重新加载 Nginx。
# nginx -t
# systemctl reload nginx.service
在 Apache 中启用 TLS 1.3
从 Apache 2.4.37 开始,您可以利用 TLS 1.3。如果您运行的是旧版本的 Apache,则需要先升级到最新版本。
# apt install apache2
# yum install httpd
安装后,您可以验证 Apache 和编译 Apache 的 OpenSSL 版本。
# httpd -V
# openssl version
现在启动,启用并验证 nginx 安装。
————– 在 Debian/Ubuntu 上 ————–
# systemctl start apache2.service
# systemctl enable apache2.service
# systemctl status apache2.service
————– 在 RHEL/CentOS/Fedora 上 ————–
# systemctl start httpd.service
# systemctl enable httpd.service
# systemctl status httpd.service
现在使用您喜欢的编辑器打开 Apache 虚拟主机配置文件。
# vi /etc/httpd/conf.d/vhost.conf
或者
# vi /etc/apache2/apache2.conf
并找到 ssl_protocols 指令并在行尾添加 TLSv1.3,如下所示。
<VirtualHost *:443>
SSLEngine On
# RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
# ECDSA
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.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;
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
ServerAdmin admin@example.com
ServerName www.example.com
ServerAlias example.com
#DocumentRoot /data/httpd/htdocs/example.com/
DocumentRoot /data/httpd/htdocs/example_hueman/
# Log file locations
LogLevel warn
ErrorLog /var/log/httpd/example.com/httpserror.log
CustomLog “|/usr/sbin/rotatelogs /var/log/httpd/example.com/httpsaccess.log.%Y-%m-%d 86400” combined
</VirtualHost>
最后,验证配置并重新加载 Apache。
————– 在 Debian/Ubuntu 上 ————–
# apache2 -t
# systemctl reload apache2.service
————– 在 RHEL/CentOS/Fedora 上 ————–
# httpd -t
# systemctl reload httpd.service
验证站点是否正在使用 TLS 1.3
通过 Web 服务器配置后,您可以使用 Chrome 70+ 版本上的 Chrome 浏览器开发工具检查您的站点是否通过 TLS 1.3 协议进行握手。
验证域名上的 TLS 1.3 协议
就这样。您已在 Apache 或 Nginx Web 服务器上托管的域上成功启用了 TLS 1.3 协议。如果您对本文有任何疑问,请随时在下面的评论部分询问。
: