前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Apache和Nginx中启用TLS 1.3

如何在Apache和Nginx中启用TLS 1.3

作者头像
星哥玩云
发布2022-07-28 14:00:03
2.5K0
发布2022-07-28 14:00:03
举报
文章被收录于专栏:开源部署开源部署

TLS 1.3是传输层安全性(TLS)协议的最新版本,它基于现有的1.2规范和适当的IETF标准:RFC 8446.它提供了比其前代产品更强的安全性和更高的性能改进。

在本文中,我们将向您展示获取有效TLS证书的分步指南,并在ApacheNginx 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协议。 如果您对本文有任何疑问,请随时在下面的评论部分询问。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在Apache中启用TLS 1.3
相关产品与服务
专用宿主机
专用宿主机(CVM Dedicated Host,CDH)提供用户独享的物理服务器资源,满足您资源独享、资源物理隔离、安全、合规需求。专用宿主机搭载了腾讯云虚拟化系统,购买之后,您可在其上灵活创建、管理多个自定义规格的云服务器实例,自主规划物理资源的使用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档