在 CentOS 8 上使用 Lets Encrypt SSL 证书保护 Apache
保护您的网络服务器始终是您的网站上线之前应考虑的关键因素之一。安全证书对于保护从网络浏览器发送到网络服务器的流量至关重要,这样,它将激励用户在充分了解发送的流量是安全的情况下与您的网站交换数据。
在大多数情况下,安全证书每年付费并更新。 Let's Encrypt 证书是一个免费、开放且自动化的证书颁发机构,您可以使用它来加密您的网站。该证书每90天就会过期,并且完全免费自动续订。
推荐阅读:如何在 CentOS 8 上使用 Let’s Encrypt 保护 Nginx
在本文中,我们将向您展示如何使用 Certbot 为 Apache Web 服务器安装 Let's Encrypt 证书,然后配置证书在 CentOS 8 上自动续订。
先决条件
在开始之前,请确保您已具备以下条件:
1. 安装并运行 Apache HTTP Web 服务器的 CentOS 8 服务器实例。您可以确认您的 apache Web 服务器已启动并正在运行。
sudo dnf install httpd
sudo systemctl status httpd
2.完全限定域名 (FQDN),指向 DNS Web 托管提供商上的 Web 服务器的公共 IP 地址。在本指南中,我们将使用 linuxtechwhiz.info
指向服务器的 IP 34.67.63.136
。
步骤1.在CentOS 8中安装Certbot
Certbot 是一个自动安装安全证书的客户端。它从让我们加密授权获取证书并将其部署到您的网络服务器上,没有太多麻烦。
Certbot 完全免费,您可以根据 Web 服务器的配置生成指令,以交互方式安装证书。
在下载certbot之前,首先安装配置加密连接所需的软件包。
我们将首先安装 EPEL 存储库,它为基于 RHEL 的系统提供高质量的附加软件包:
sudo dnf install epel-release
接下来,安装 mod_ssl 和 openssl 软件包。
sudo dnf install mod_ssl openssl
安装所有依赖项后,安装 Certbot 和 Certbot 的 Apache 模块。
sudo dnf install certbot python3-certbot-apache
该命令安装 Certbot、Certbot 的 Apache 模块以及其他依赖项。
第 2 步:创建 Apache 虚拟主机
下一步是为我们的域创建一个虚拟主机文件 - linuxtechwhiz.info
。首先创建您将放置 HTML 文件的文档根目录。
sudo mkdir /var/www/linuxtechwhiz.info.conf
创建一个测试 index.html
文件,如图所示。
sudo echo “<h1>Welcome to Apache HTTP server</h1>” > /var/www/linuxtechwhiz.info/index.html
接下来,创建一个虚拟主机文件,如图所示。
sudo vim /etc/httpd/conf.d/linuxtechwhiz.info
追加以下配置。
<VirtualHost *:443>
ServerName linuxtechwhiz.info
ServerAlias www.linuxtechwhiz.info
DocumentRoot /var/www/linuxtechwhiz.info/
<Directory /var/www/linuxtechwhiz.info/>
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>
ErrorLog /var/log/httpd/www.linuxtechwhiz.info-error.log
CustomLog /var/log/httpd/www.linuxtechwhiz.info-access.log combined
</VirtualHost>
保存并退出。
将权限分配给文档根目录,如图所示。
sudo chown -R apache:apache /var/www/linuxtechwhiz.info
要使更改生效,请重新启动 Apache 服务。
sudo systemctl restart httpd
步骤3:在CentOS 8上安装Let’s Encrypt SSL证书
现在如图所示运行certbot,开始安装Let’s Encrypt 证书。
sudo certbot --apache -d domain.com
在我们的例子中,这将是:
sudo certbot --apache -d linuxtechwhiz.info
该命令将引导您完成一系列提示,使您能够为您的域配置 Lets Encrypt。请务必提供您的电子邮件地址、接受服务条款并指定您希望使用 HTTPS 协议(HTTP 的加密版本)的域名。
如果一切顺利,您应该在最后收到一条祝贺消息,通知您您的网站已使用 Let’s Encrypt 证书得到保护。您的证书的有效性也会显示 - 通常是在部署后90天后。
现在返回虚拟主机文件并附加以下配置行。
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/linuxtechwhiz.info/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/linuxtechwhiz.info/privkey.pem
保存并退出。
最终的 Apache 虚拟主机配置将如下所示:
<VirtualHost *:443>
ServerName linuxtechwhiz.info
ServerAlias www.linuxtechwhiz.info
DocumentRoot /var/www/linuxtechwhiz.info/
<Directory /var/www/linuxtechwhiz.info/>
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>
ErrorLog /var/log/httpd/www.linuxtechwhiz.info-error.log
CustomLog /var/log/httpd/www.linuxtechwhiz.info-access.log combined
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/linuxtechwhiz.info/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/linuxtechwhiz.info/privkey.pem
</VirtualHost>
再次重新启动 Apache。
sudo systemctl restart httpd
第 4 步:验证 Let's Encrypt SSL 证书
要验证一切正常,请启动浏览器并访问服务器的 IP 地址。您现在应该在 URL 的开头看到一个挂锁符号。
要获取更多详细信息,请单击挂锁符号,然后单击出现的下拉菜单中的“证书”选项。
证书详细信息将显示在下一个弹出窗口中。
此外,您还可以在 https://www.ssllabs.com/ssltest/
测试您的服务器,您的网站应该获得 ‘A’
等级,如图所示。
第 5 步:自动续订 Let’s Encrypt SSL 证书
Let's Encrypt 仅在 90 天内有效。通常,更新过程是由 certbot 包执行的,它将更新脚本添加到 /etc/cron.d 目录中。该脚本每天运行两次,并将在到期后的 30 天内自动续订任何证书。
要测试自动续订过程,请使用 certbot 进行试运行测试。
sudo /usr/local/bin/certbot-auto renew --dry-run
如果没有遇到错误,则意味着您可以开始了。
本指南到此结束。在本指南中,我们演示了如何使用 certbot 在 CentOS 8 系统上运行的 Apache Web 服务器上安装和配置 Let’s Encrypt 证书。