Install-Lets-Encrypt-SSL-NGINX-Rocky-Linux

安全是网站所有者最关心的问题之一,尤其是如果你经营的是电子商务商店或接受用户机密信息(如用户名和密码) 的网站。纯 HTTP 协议是不安全的,因为数据是以纯文本形式发送的,黑客可以窃听从 web 服务器发送和接受的通信。

为了克服这种风险,建议使用 TLS / SSL 证书保护 Web 服务器。这是一个加密数字证书,可对您的 Web 服务器进行加密,并确保与 Web 服务器交换的数据已加密。

Let's Encrypt SSL 证书是 Let's Encrypt CA 提供的数字证书,用于(证书授权)保护 Web 服务器。这是免费的 TLS / SSL 证书,有效期只有 90 天,因此在到期之前需要更新。这对于无法负担高级 SSL 证书的初创公司或个人是个不错的选择。

在本指南中,我们将演示如何在 Rocky Linux 8 上安装 Let's Encrypt SSL / TLS 证书。

必备条件

(1) 带有 sudo 用户权限的 Rocky Linux 8 服务器。
(2) 确保您有一个 FQDN (Fully Qualified Domain Name) 指向服务器的公共 IP。要实现这一点,请转到域注册器,并在 DNS 设置中配置 A 记录,将域名指向服务器的公共 IP。

在本文中,我们使用的域名是 linuxtechgeek.info,它指向服务器的 IP 地址 34.134.239.201

Domain-DNS-Record-Linux

1) 安装 Nginx Web Server

我们从在 Rocky 8 上安装 Nginx Web 服务器开始,让我们升级系统包并更新存储库。

$ sudo dnf update

升级完成后,重新启动一次系统,然后按照如下步骤安装 Nginx Web Server

$ sudo dnf install nginx

Install-nginx-on-rocky-linux8

启动 nginx 服务

$ sudo systemctl start nginx

设置开机启动

$ sudo systemctl enable nginx

验证服务状态

$ sudo systemctl status nginx

Nginx-Service-Status-Rocky-Linux8

您也可以从浏览器验证这一点,先放行防火墙上的 HTTP 流量

$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --add-service=https --permanent

重新加载防火墙

$ sudo firewall-cmd --reload

然后浏览服务器的 IP 地址或域名

http://domain_name

Nginx-default-page-rocky-linux

2) 为域创建一个文档根目录

在 linuxtechgeek.info 路径下创建一个目录

$ sudo mkdir -p /var/www/linuxtechgeek.info/html

出于演示的目的,我们将创建一个简单的 index.html 文件

$ sudo vi /var/www/linuxtechgeek.info/html/index.html

接下来,粘贴以下示例 HTML 代码并保存更改

<!DOCTYPE html>
<html>
    <head>
        <title>Welcome to linuxtechgeek.info</title>
    </head>
    <body>
  <h1>Hey Guys! Our Nginx server block is working.</h1>
    </body>
</html>

接下来,使用 chown 命令设置目录的所有权,以避免权限问题。

$ sudo chown -R nginx /var/www/linuxtechgeek.info/

接下来,设置权限,以便组和全局用户具有文件的读取和执行权限。

$ sudo chmod -R 755 /var/www/linuxtechgeek.info/

3) 配置 Nginx Server

创建一个 linuxtechgeek.info.conf 配置文件,如下所示

$ sudo vi /etc/nginx/conf.d/linuxtechgeek.info.conf

复制并粘贴以下行,请确保将 linuxtechgeek.info 域名替换为您自己的域名。

server {
    listen 80;
    server_name linuxtechgeek.info www.linuxtechgeek.info;
    root /var/www/linuxtechgeek.info/html;
    index index.php index.html index.htm;
    access_log /var/log/nginx/linuxtechgeek.info.access.log;
    error_log /var/log/nginx/linuxtechgeek.info.error.log;
}

保存更改并退出文件,然后执行如下命令,测试配置是否正确

$ sudo nginx -t

Nginx-t-command-output-rocky-linux

重启 nginx 服务

$ sudo systemctl restart nginx

确认 nginx 状态

$ sudo systemctl status nginx

将 SELinux 设置为允许模式

$ sudo setenforce permissive

确认 SELinux 允许模式

$ sudo getenforce

Set-SELinux-Permissive-Mode-Rocky-Linux

Run below sed command to permanently set the selinux mode as permissive.

如果需要将 selinux 模式永久设置为允许模式,运行如下命令

$ sudo sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/sysconfig/selinux

请再次浏览您的域名,确认配置成功

http://domain_name

Nginx-Customize-Web-Page-Rocky-Linux

4) 安装 Let's Encrypt SSL/TLS 证书

接下来安装 Let’s Encrypt证书,然而要实现这一点,我们需要安装 certbot。Certbot 由 Python 编写,由电子前沿基金会开发,是 Let' s Encrypt CA 的一个功能齐全的客户端。它运行在 web 服务器上,允许您在单个命令中自动为您的 web 服务器设置 SSL 证书。

安装 EPEL 存储库

$ sudo dnf install -y epel-release

安装 certbot,python3-certbot-nginx

$ sudo dnf install certbot python3-certbot-nginx

Install-Certbot-with-dnf-command-rocky-linux

运行 certbot 客户端安装 SSL 证书

$ sudo certbot --nginx

按照指引,完成安装。Certbot 将获取 SSL/TLS 证书,并为指定的域名部署。这可以为您的域名提供 HTTPS 协议,实际上是加密与 Web 服务器交换的流量。

Certbot-nginx-Rocky-Linux

要确认 HTTPS 已启用,请返回浏览器并重新加载它。这一次,您将注意到 URL 栏上有一个挂锁图标,表明该网站是加密的。

Nginx-over-https-Rocky-Linux

单击图标,然后选择 Certificate

Show-SSL-Certificate-Web-Page

这将显示所证书的详细信息

SSL-Certificate-Details-Web-Page

此外,您可以在 SSL 实验室测试 web 服务器的状态,SSL 实验室是一个通过互联网对 web 服务器进行深入分析的网站。你应该得到如图所示的 A 评级。

Check-SSL-Certificate-Grade

5) 管理 SSL 证书续订

Let's Encrypt 证书的有效期为 90 天,但 Let's Encrypt 建议每 60 天更新一次证书。电子邮件通知将在截止日期前的最后 20 天内发送给您,并在最后 10 天内发送频率增加。

您可以通过以下方式手动更新证书

$ sudo certbot renew

您可以通过添加新的计划任务来自动化续订,打开 crontab 文件

$ crontab -e

添加如下所示的行,保存并退出。

0 0 * * * /usr/bin/certbot renew > /dev/null 2>&1

我的开源项目

酷瓜云课堂-在线教育解决方案


鸠摩智首席音效师
461 声望4 粉丝

身强体健,龙精虎猛的活着。


引用和评论

0 条评论