如何在 Debian 12、11 或 10 上使用 Let's Encrypt 保护 Apache

使用 Let's Encrypt 证书保护您的 Apache Web 服务器对于保护您的网站和数据至关重要。本指南将引导您在 Debian 12 Bookworm、Debian 11 Bullseye 和 Debian 10 Buster 上完成此过程。这里的重点是实施强大的安全措施,同时简化通常与服务器管理相关的复杂性。

在 Debian 上将 Let's Encrypt 与 Apache 结合使用的主要优势:

  • 经济高效:Let's Encrypt 提供免费的 SSL 证书,让每个人都能享受高级别的安全性。
  • 自动续订:Let's Encrypt 的自动化功能简化了获取和更新 SSL 证书的过程,降低了安全漏洞的风险。
  • 增强安全性:Let's Encrypt 的 SSL 证书为传输中的数据提供强加密,增强了 Debian 上 Apache 服务器的整体安全性。
  • 广泛兼容性:大多数现代网络浏览器都识别 Let's Encrypt 证书,从而确保流畅的用户体验。
  • 主动安全措施:通过定期更新和严格的政策,Let's Encrypt 成为抵御各种网络威胁的可靠防线。

本指南将教您如何使用 Let's Encrypt 保护 Debian 上的 Apache 服务器,从而提高 Web 服务的安全性和可靠性。请继续关注有关实现这一基本安全设置的详细说明。

为 Apache 安装 Certbot

本节将重点介绍如何在基于 Debian 的 Linux 系统上安装 Certbot for Apache。Certbot 是一款功能强大的工具,可简化从 Let's Encrypt 获取和配置 SSL 证书的过程。它与 Apache 协同工作,使您能够在服务器上启用 HTTPS。

在为 Apache 安装 Certbot 之前更新 Debian 软件包存储库

在安装 Certbot 之前,确保软件包存储库和 Debian 系统上的现有软件包已更新至关重要。保持系统更新可确保您安装最新版本的 Certbot 和依赖项。执行以下命令来更新软件包存储库并升级现有软件包:

sudo apt update
sudo apt upgrade

安装 Certbot 和 Apache 插件

现在您的 Debian 系统已更新,下一步是安装 Certbot 及其 Apache 插件。Apache 插件至关重要,因为它使 Certbot 能够与 Apache 交互,自动获取和更新证书,并配置 Apache 以使用它们。运行以下命令安装 Certbot 和 Apache 插件:

sudo apt install certbot python3-certbot-apache

设置 Apache 和 Let's Encrypt 证书

在本节中,我们将指导您配置 Apache 并使用 Certbot 为您的域生成 Let's Encrypt SSL 证书。我们还将介绍如何使用各种选项来提高服务器配置的安全性。

使用 Debian 在 Apache 上配置 Certbot 并生成 SSL 证书

安装 Certbot 及其 Apache 插件后,下一步是运行 Certbot 为您的域生成 SSL 证书。该命令包含几个优化安全性的选项。

以下是所用选项的细目:

  • --apache:指定正在使用的 Web 服务器是 Apache。
  • --agree-tos:表示您同意 Let's Encrypt 的服务条款。
  • --redirect:设置从 HTTP 到 HTTPS 的永久 301 重定向,确保所有流量都经过加密。
  • --hsts:添加 Strict-Transport-Security 标头以强制执行安全连接。
  • --staple-ocsp:启用 OCSP Stapling,增强 SSL 协商性能,同时保护用户隐私。
  • --email:这是您将接收与您的 SSL 证书相关的通知(例如续订提醒和安全警报)的电子邮件地址。

代替 you@example.com 提供您的真实电子邮件地址 yourdomain.com 使用您的域名。执行以下命令:

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d yourdomain.com

成功执行后,Certbot 将为您的域生成 SSL 证书,配置 Apache 以使用它,并应用指定的安全选项。您的服务器现在将是安全的,并且您的网站将可以通过 HTTPS 访问。

使用 Apache 的替代 Certbot 配置方法

对于那些喜欢更具指导性和互动性的方法的用户,Certbot 提供了一种替代方法,它会提示您输入信息和配置选择。以下是使用此方法的方法:

运行以下命令:

sudo certbot --apache

Certbot 将启动一个交互式会话。以下是您可能会遇到的提示的演练:

  • 输入电子邮件地址(用于紧急续订和安全通知):提供您的电子邮件地址。Let's Encrypt 将使用此地址来传达有关您的证书的信息。
  • 同意 Let's Encrypt 服务条款:您将被要求同意服务条款。输入A表示同意。
  • 与电子前沿基金会分享您的电子邮件地址,以便了解其工作进展:若支持EFF,输入Y表示支持,否则输入N表示不支持。
  • 您希望为哪些名称激活 HTTPS:Certbot 将显示可以颁发证书的域名。输入与您的域名对应的数字,或将其留空。
  • 选择适当的操作:您可以选择:
    • 1:尝试重新安装证书
    • 2:更新并更换证书(每 7 天最多 5 次)
    • 选择适合您需要的选项。
  • 选择是否将 HTTP 流量重定向到 HTTPS:系统将询问您是否要将 HTTP 流量重定向到 HTTPS。对于大多数网站来说,这都是建议的:
    • 1:无重定向 – 不再对 Web 服务器配置进行更改。
    • 2:重定向——使所有请求重定向到安全的 HTTPS 访问。
    • 选择选项 2 可获得更好的安全性。

一旦您完成所有提示并且过程完成,Certbot 将输出类似于上述消息,指示您的证书文件的位置和更多信息。

使用 Cron 自动更新 SSL 证书

在本节中,我们将使用 Cron(基于 Linux 的系统中内置的作业调度程序)为您的 SSL 证书设置自动续订过程。Let's Encrypt SSL 证书的有效期为 90 天,必须在到期前进行续订,以避免服务中断。Certbot 提供了一个用于续订证书的命令,​​我们可以使用 Cron 自动执行此任务。

证书续订试运行

在自动执行续订过程之前,确保续订命令按预期工作至关重要。我们可以通过执行试运行来做到这一点,试运行可在不更改证书的情况下模拟续订过程。运行以下命令启动试运行:

sudo certbot renew --dry-run

安排自动证书续订

如果试运行顺利完成且没有错误,我们可以安排自动证书续订。我们将使用 Cron 在每天的特定时间运行续订命令。

首先,使用以下命令以编辑模式打开 crontab 文件:

sudo crontab -e

在文件末尾添加以下行,以安排在凌晨 2:30 进行每日续订检查:

30 2 * * * /usr/bin/certbot renew --quiet

--quiet 选项确保更新过程在后台静默运行,除非出现错误,否则不会产生任何输出。

添加此行后,保存并关闭文件。现在,您已为 SSL 证书设置了自动续订流程。Cron 将每天检查是否有任何证书需要续订,并根据需要进行续订。这可确保您的 Apache 服务器始终使用有效的 SSL 证书,从而保持安全的用户连接。

增强 Apache SSL 配置

在本节中,我们将通过修改 Apache 服务器的 SSL 配置来优化其性能。这涉及设置 SSL 证书、启用 HTTP/2、实施 HTTP 严格传输安全 (HSTS) 以及配置 SSL 协议和密码。此配置需要 Apache 模块 mod_ssl, mod_socache_shmcb, mod_rewrite, 和 mod_headers.

编辑Apache配置文件

首先,您需要在 Apache 中访问您域的配置文件。执行以下命令:

sudo nano /etc/apache2/sites-available/your_domain.conf

这将在名为 Nano 的文本编辑器中打开您域名的配置文件。进入后,在 VirtualHost 块中进行以下调整。

将 HTTP 重定向到 HTTPS

首先,我们将设置一条规则,将所有 HTTP 流量重定向到 HTTPS,以确保与服务器的所有连接都是安全的。此规则排除对 .well-known/acme-challenge/ 目录,Certbot 在证书颁发过程中使用该目录进行域验证。在 <VirtualHost *:80> 堵塞:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/\.well\-known/acme\-challenge/
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]

启用 SSL 并指定证书

接下来,在 <VirtualHost *:443> 块,我们将启用 SSL 并指定您的 SSL 证书和私钥的路径:

SSLEngine on
SSLCertificateFile      /path/to/signed_cert_and_intermediate_certs
SSLCertificateKeyFile   /path/to/private_key

代替 /path/to/signed_cert_and_intermediate_certs SSL 证书文件的路径,以及 /path/to/private_key 使用您的私钥文件的路径。

启用 HTTP/2

为了提高性能,我们将启用 HTTP/2(如果可用):

Protocols h2 http/1.1

实施 HSTS

我们还将添加 Strict-Transport-Security 标头来强制安全连接:

Header always set Strict-Transport-Security "max-age=63072000"

配置 SSL 协议和密码

接下来,我们将指定应使用哪些 SSL 协议和密码以确保高安全性和兼容性:

SSLProtocol                        all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite                  ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305
SSLHonorCipherOrder    off
SSLSessionTickets            off

启用 OCSP 装订

最后,我们将启用 OCSP 装订,该功能可提高 SSL 协商的性能,同时保护访问者的隐私:

SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"

验证并应用更改

完成后,保存并退出文件。验证 Apache 配置以确保没有语法错误至关重要。运行此命令进行检查:

sudo apachectl configtest

如果没有问题,请通过重新加载 Apache 来应用更改:

sudo systemctl restart apache2

结论

在本文中,我们深入研究了如何在 Debian 10、11 和 12 上使用 Let's Encrypt SSL 证书保护 Apache。我们强调了 SSL 证书在确保服务器和客户端之间的安全通信方面的重要性。从安装 Certbot 开始,我们探讨了如何从 Let's Encrypt 获取免费 SSL 证书。我们还讨论了配置 Apache 以利用 SSL 证书、通过 cron 作业自动执行续订过程以及通过 Apache 配置加强安全性。

最后的建议是,定期监控日志并保持系统最新状态至关重要。这些做法将确保您了解潜在问题,并确保您的服务器能够抵御最新的安全漏洞。

Joshua James
跟我来
Joshua James 的最新帖子 (查看全部)

发表评论