如何在 CentOS 7 上使用 Let‘s Encrypt 保护 Apache

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站

简介

Let's Encrypt 是一个证书颁发机构(CA),为传输层安全性(TLS)加密提供免费证书,从而在 Web 服务器上启用加密的 HTTPS。它通过提供一个软件客户端 Certbot 简化了证书的创建、验证、签名、安装和更新过程。

在本教程中,您将使用 Certbot 在运行 Apache 作为 Web 服务器的 CentOS 7 服务器上设置来自 Let's Encrypt 的 TLS/SSL 证书。此外,您将使用定时作业自动化证书更新过程,您可以通过阅读《如何使用 Cron 在 VPS 上自动化任务》来了解更多信息。

先决条件

要完成本指南,您需要:

  • 通过遵循 CentOS 7 初始服务器设置指南设置的一个 CentOS 7 服务器,具有具有 sudo 权限的非根用户。
  • 通过遵循新 CentOS 7 服务器的附加推荐步骤指南配置的基本防火墙。
  • 在 CentOS 7 服务器上安装了 Apache,并配置了虚拟主机。您可以通过遵循我们的教程《如何在 CentOS 7 上安装 Apache Web 服务器》来了解如何设置。确保您有一个用于您的域的虚拟主机文件。本教程将使用 /etc/httpd/sites-available/example.com.conf 作为示例。
  • 拥有或控制您希望使用证书的注册域名。如果您还没有注册域名,可以在 Namecheap 上购买,或者在 Freenom 上免费获取,或者使用您选择的域名注册商。
  • 一个 DNS A 记录 ,将您的域指向服务器的公共 IP 地址。您可以通过阅读 DigitalOcean DNS 介绍中的详细信息来了解如何在 DigitalOcean 平台上添加它们。由于 Let's Encrypt 验证您拥有要为其颁发证书的域的方式,DNS A 记录是必需的。例如,如果您想要为 example.com 获取证书,那么该域必须解析到您的服务器才能使验证过程正常工作。我们的设置将使用 example.comwww.example.com 作为域名,这两个域名都需要有效的 DNS 记录。

当您完成所有这些先决条件后,继续安装 Let's Encrypt 客户端软件。

步骤 1 --- 安装 Certbot Let's Encrypt 客户端

要使用 Let's Encrypt 获取 SSL 证书,您首先需要安装 Certbot 和 mod_ssl,这是一个为 SSL v3 加密提供支持的 Apache 模块。

certbot 软件包默认情况下不会通过软件包管理器提供。您需要启用 EPEL 仓库来安装 Certbot。

要添加 CentOS 7 EPEL 仓库,请运行以下命令:

command 复制代码
sudo yum install epel-release

现在您可以访问该仓库,安装所有必需的软件包:

command 复制代码
sudo yum install certbot python2-certbot-apache mod_ssl

在安装过程中,您将被询问是否导入 GPG 密钥。该密钥将验证您正在安装的软件包的真实性。为了允许安装完成,请在提示时输入 y 并按 ENTER 键。

安装了这些服务后,您现在可以运行 Certbot 并获取您的证书。

步骤 2 --- 获取证书

现在 Certbot 已安装,您可以使用它为您的域请求 SSL 证书。

使用 certbot Let's Encrypt 客户端为 Apache 生成 SSL 证书自动化了过程中的许多步骤。该客户端将自动获取并安装一个新的 SSL 证书,该证书对您提供的域是有效的。

要执行交互式安装并获取仅覆盖单个域的证书,请使用以下命令运行 certbot

command 复制代码
sudo certbot --apache -d example.com

这将使用 --apache 插件运行 certbot,并使用 -d 标志指定要为其配置证书的域。

如果要安装一个对多个域或子域有效的单个证书,您可以将它们作为额外参数传递给命令,并使用 -d 标志标记每个新域或子域。参数列表中的第一个域名将是 Let's Encrypt 用于创建证书的基本域。因此,请将基本域名作为参数列表中的第一个域名,然后跟随任何其他子域或别名:

command 复制代码
sudo certbot --apache -d example.com -d www.example.com

在此示例中,基本域是 example.com

certbot 实用程序还可以在证书请求过程中提示您输入域信息。要使用此功能,请不带任何域调用 certbot

command 复制代码
sudo certbot --apache

程序将向您展示逐步指南以自定义您的证书选项。它将要求您提供用于丢失密钥恢复和通知的电子邮件地址,然后提示您同意服务条款。如果您没有在命令行上指定您的域,程序将要求您输入。如果您的虚拟主机文件没有使用 ServerName 指令明确指定它们提供的域,程序将要求您选择虚拟主机文件。在大多数情况下,默认的 ssl.conf 文件将起作用。

您还可以选择在启用 httphttps 访问之间进行选择,或者强制所有请求重定向到 https。出于更好的安全性考虑,建议选择选项 2: Redirect,如果您没有特殊需要允许未加密的连接。选择您的选项,然后按 ENTER 键。

plaintext 复制代码
请选择是否将 HTTP 流量重定向到 HTTPS,删除 HTTP 访问。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
1: 不重定向 - 对 Web 服务器配置不做进一步更改。
2: 重定向 - 使所有请求重定向到安全的 HTTPS 访问。对于新站点,或者如果您确信您的站点在 HTTPS 上运行,请选择此选项。您可以通过编辑您的 Web 服务器配置来撤消此更改。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
选择适当的数字 [1-2] 然后 [enter](按 'c' 取消):2

安装成功后,您将看到类似以下的消息:

plaintext 复制代码
重要说明:
 - 恭喜!您的证书和链已保存在:
   /etc/letsencrypt/live/example.com/fullchain.pem
   您的密钥文件已保存在:
   /etc/letsencrypt/live/example.com/privkey.pem
   您的证书将在 2019-08-14 到期。在将来,要获取此证书的新版本或调整版本,只需再次运行 certbot 并使用 "certonly" 选项。要非交互式地更新 *所有* 您的证书,请运行 "certbot renew"
 - 如果您喜欢 Certbot,请考虑通过以下方式支持我们的工作:

   向 ISRG / Let's Encrypt 捐赠:   https://letsencrypt.org/donate
   向 EFF 捐赠:                    https://eff.org/donate-le

生成的证书文件将在 /etc/letsencrypt/live 目录中以您的基本域命名的子目录中可用。

现在您的证书已下载、安装和加载,您可以检查您的 SSL 证书状态,以确保一切正常工作。

步骤 3 --- 检查您的证书状态

此时,您可以通过使用云安全公司 Qualys 的 SSL 服务器测试来确保 Certbot 正确创建了您的 SSL 证书。

在您首选的 Web 浏览器中打开以下链接,将 example.com 替换为您的基础域名:

复制代码
https://www.ssllabs.com/ssltest/analyze.html?d=example.com

您将会进入一个页面,该页面会立即开始测试与您服务器的 SSL 连接:

!SSL 服务器测试

一旦测试开始运行,可能需要几分钟才能完成。测试的状态将在您的浏览器中更新。

当测试完成时,页面将显示一个字母等级,用于评估您服务器配置的安全性和质量。在撰写本文时,默认设置将获得A等级:

!SSL 报告 - A

有关 SSL Labs 如何确定这些等级的更多信息,请查看 SSL Labs Grading 帖子,其中详细介绍了 2018 年 1 月对评分方案的更新。

尝试使用 https:// 重新加载您的网站,并注意您浏览器的安全指示。现在,它将指示该站点已得到适当的安全保护,通常会显示一个绿色的锁图标。

有了您的 SSL 证书已经验证,下一步是设置证书的自动更新,以保持证书的有效性。

步骤 4 --- 设置自动续订

Let's Encrypt 证书有效期为 90 天,但建议您每 60 天续订一次证书,以留有一定的错误余地。因此,最佳做法是自动化此过程,定期检查并续订证书。

首先,让我们来看一下您将用于续订证书的命令。certbot Let's Encrypt 客户端具有一个 renew 命令,它会自动检查当前安装的证书,并在距离到期日期不足 30 天时尝试续订它们。通过使用 --dry-run 选项,您可以运行此任务的模拟,以测试 renew 的工作方式:

command 复制代码
sudo certbot renew --dry-run

输出应该类似于以下内容:

复制代码
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/example.com.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert not due for renewal, but simulating renewal for dry run
Plugins selected: Authenticator apache, Installer apache
Starting new HTTPS connection (1): acme-staging-v02.api.letsencrypt.org
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for example.com
http-01 challenge for www.example.com
Waiting for verification...
Cleaning up challenges
Resetting dropped connection: acme-staging-v02.api.letsencrypt.org

- - - - - - - - - - - - - - - - - - - - - - - - -

## 结论

在本指南中,您安装了 Let's Encrypt Certbot 客户端,为您的域名下载了 SSL 证书,并设置了自动证书更新。如果您对使用 Certbot 有任何疑问,可以查阅官方 Certbot 文档。我们还建议您定期查看官方 Let's Encrypt 博客,以获取重要更新。
相关推荐
IC 见路不走26 分钟前
LeetCode 第91题:解码方法
linux·运维·服务器
翻滚吧键盘38 分钟前
查看linux中steam游戏的兼容性
linux·运维·游戏
小能喵43 分钟前
Kali Linux Wifi 伪造热点
linux·安全·kali·kali linux
汀沿河1 小时前
8.1 prefix Tunning与Prompt Tunning模型微调方法
linux·运维·服务器·人工智能
zly35001 小时前
centos7 ping127.0.0.1不通
linux·运维·服务器
小哥山水之间2 小时前
基于dropbear实现嵌入式系统ssh服务端与客户端完整交互
linux
ldj20202 小时前
2025 Centos 安装PostgreSQL
linux·postgresql·centos
翻滚吧键盘2 小时前
opensuse tumbleweed上安装显卡驱动
linux
cui_win3 小时前
【内存】Linux 内核优化实战 - net.ipv4.tcp_tw_reuse
linux·网络·tcp/ip
CodeWithMe6 小时前
【Note】《深入理解Linux内核》 Chapter 15 :深入理解 Linux 页缓存
linux·spring·缓存