首页 > 系统相关 >如何在 Ubuntu 20.04 上使用 Let‘s Encrypt 保护 Apache

如何在 Ubuntu 20.04 上使用 Let‘s Encrypt 保护 Apache

时间:2024-10-27 13:45:13浏览次数:9  
标签:Encrypt 证书 sudo Let Certbot Ubuntu Apache 服务器 certbot

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

简介

Let’s Encrypt 是一个证书颁发机构(CA),它简化了获取和安装免费 TLS/SSL 证书的过程,从而在 Web 服务器上启用了加密的 HTTPS。它通过提供一个软件客户端 Certbot 来简化这个过程,该客户端试图自动化大部分(如果不是全部)所需的步骤。目前,在 Apache 和 Nginx 上,获取和安装证书的整个过程都是完全自动化的。

在本指南中,我们将使用 Certbot 在 Ubuntu 20.04 上为 Apache 获取免费的 SSL 证书,并确保该证书设置为自动续订。

本教程使用单独的虚拟主机文件来设置将由 Let’s Encrypt 保护的网站,而不是使用 Apache 的默认配置文件。我们建议为服务器中托管的每个域创建新的 Apache 虚拟主机文件,因为这有助于避免常见错误,并将默认配置文件保持为备用设置。

先决条件

要按照本教程操作,您需要:

  • 通过按照 Ubuntu 20.04 初始服务器设置教程 设置好的一个 Ubuntu 20.04 服务器,包括一个 sudo 非根用户和一个防火墙。

  • 一个完全注册的域名。本教程将在整个过程中使用 your_domain 作为示例。您可以在 Namecheap 购买一个域名,在 Freenom 免费获取一个域名,或者使用您选择的域名注册商。

  • 为您的服务器设置好以下两个 DNS 记录。您可以参考 DigitalOcean DNS 介绍中的详细信息来添加它们。

    • 一个 A 记录,将 your_domain 指向您服务器的公共 IP 地址。
    • 一个 A 记录,将 www.your_domain 指向您服务器的公共 IP 地址。
  • 通过按照《在 Ubuntu 20.04 上安装 Apache》教程安装了 Apache。确保您为您的域名有一个虚拟主机文件。本教程将使用 /etc/apache2/sites-available/your_domain.conf 作为示例。

步骤 1 — 安装 Certbot

为了使用 Let’s Encrypt 获取 SSL 证书,我们首先需要在您的服务器上安装 Certbot 软件。我们将使用默认的 Ubuntu 软件包存储库来进行安装。

我们需要两个软件包:certbotpython3-certbot-apache。后者是一个插件,它将 Certbot 与 Apache 集成在一起,使得可以使用单个命令自动获取证书并在您的 Web 服务器中配置 HTTPS。

sudo apt install certbot python3-certbot-apache

您将被提示通过按 Y,然后按 ENTER 来确认安装。

现在 Certbot 已经安装在您的服务器上。在下一步中,我们将验证 Apache 的配置,以确保您的虚拟主机设置适当。这将确保 certbot 客户端脚本能够检测到您的域,并自动重新配置您的 Web 服务器以使用您新生成的 SSL 证书。

步骤 2 — 检查您的 Apache 虚拟主机配置

为了能够自动获取和配置 SSL 证书,Certbot 需要在您的 Apache 配置文件中找到正确的虚拟主机。您服务器的域名将从 VirtualHost 配置块中定义的 ServerNameServerAlias 指令中检索。

如果您在 Apache 安装教程中遵循了虚拟主机设置步骤,您应该已经在 /etc/apache2/sites-available/your_domain.conf 中为您的域设置了一个 VirtualHost 块,并且 ServerNameServerAlias 指令已经适当设置。

要检查这一点,使用 nano 或您喜欢的文本编辑器打开您域的虚拟主机文件:

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

找到现有的 ServerNameServerAlias 行。它们应该如下所示:

...
ServerName your_domain
ServerAlias www.your_domain
...

如果您已经像这样设置了您的 ServerNameServerAlias,您可以退出文本编辑器并继续下一步。如果您使用的是 nano,您可以通过输入 CTRL+X,然后输入 YENTER 来退出。

如果您当前的虚拟主机配置与示例不匹配,请相应地进行更新。完成后,保存文件并退出编辑器。然后,运行以下命令来验证您的更改:

sudo apache2ctl configtest

您应该会得到 Syntax OK 作为响应。如果出现错误,请重新打开虚拟主机文件并检查是否有任何拼写错误或缺少字符。一旦您的配置文件语法正确,重新加载 Apache 以使更改生效:

sudo systemctl reload apache2

通过这些更改,Certbot 将能够找到正确的 VirtualHost 块并对其进行更新。

接下来,我们将更新防火墙以允许 HTTPS 流量。

步骤 3 —— 允许防火墙通过 HTTPS 流量

如果你已经按照先决条件指南的建议启用了 UFW 防火墙,你需要调整设置以允许 HTTPS 流量。在安装后,Apache 注册了一些不同的 UFW 应用程序配置文件。我们可以利用 Apache Full 配置文件来允许服务器上的 HTTP 和 HTTPS 流量。

要验证服务器当前允许的流量类型,可以使用以下命令:

sudo ufw status

如果你遵循了我们的 Apache 安装指南之一,你的输出应该类似于这样,意味着目前只允许端口 80 上的 HTTP 流量:

状态:active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Apache                     ALLOW       Anywhere             
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Apache (v6)                ALLOW       Anywhere (v6)

为了额外允许 HTTPS 流量,允许 “Apache Full” 配置文件并删除多余的 “Apache” 配置文件:

sudo ufw allow 'Apache Full'
sudo ufw delete allow 'Apache'

你的状态现在将如下所示:

sudo ufw status
状态:active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Apache Full                ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Apache Full (v6)           ALLOW       Anywhere (v6)        

现在你已经准备好运行 Certbot 并获取你的证书。

步骤 4 —— 获取 SSL 证书

Certbot 提供了多种通过插件获取 SSL 证书的方式。Apache 插件将负责在必要时重新配置 Apache 并重新加载配置。要使用此插件,请输入以下命令:

sudo certbot --apache

此脚本将提示你回答一系列问题,以配置你的 SSL 证书。首先,它将要求你提供一个有效的电子邮件地址。此电子邮件将用于更新通知和安全通知:

将调试日志保存到 /var/log/letsencrypt/letsencrypt.log
已选择的插件:Authenticator apache,Installer apache
输入电子邮件地址(用于紧急更新和安全通知)(输入 'c' 取消):you@your_domain

提供有效的电子邮件地址后,按 ENTER 继续下一步。然后,你将被提示确认是否同意 Let’s Encrypt 的服务条款。你可以通过按 A 然后 ENTER 来确认:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
请阅读 https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf 上的服务条款。你必须同意才能在 https://acme-v02.api.letsencrypt.org/directory 上注册 ACME 服务器
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel:A

接下来,你将被问及是否愿意与 Electronic Frontier Foundation 分享你的电子邮件地址以接收新闻和其他信息。如果你不想订阅他们的内容,输入 N。否则,输入 Y。然后,按 ENTER 继续下一步。

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

## 第五步 — 验证 Certbot 自动续订

Let's Encrypt 的证书只在九十天内有效。这是为了鼓励用户自动化证书续订过程,同时确保被滥用的证书或被盗的密钥会在较短的时间内过期。

我们安装的 `certbot` 软件包通过在 `/etc/cron.d` 中包含一个续订脚本来处理续订,这由一个名为 `certbot.timer` 的 `systemctl` 服务来管理。该脚本每天运行两次,并将自动续订任何在到期前三十天内的证书。

要检查此服务的状态并确保其处于活动状态并正在运行,您可以使用:

```command
sudo systemctl status certbot.timer

您将会得到类似以下的输出:

● certbot.timer - Run certbot twice daily
     Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)
     Active: active (waiting) since Tue 2020-04-28 17:57:48 UTC; 17h ago
    Trigger: Wed 2020-04-29 23:50:31 UTC; 12h left
   Triggers: ● certbot.service

Apr 28 17:57:48 fine-turtle systemd[1]: Started Run certbot twice daily.

要测试续订过程,您可以使用 certbot 进行干运行:

sudo certbot renew --dry-run

如果您没有看到错误,那么一切都设置好了。在必要时,Certbot 将续订您的证书并重新加载 Apache 以应用更改。如果自动续订过程失败,Let’s Encrypt 将向您指定的电子邮件发送消息,警告您的证书即将过期。

结论

在本教程中,您已经安装了 Let’s Encrypt 客户端 certbot,为您的域配置并安装了 SSL 证书,并确认了 Certbot 的自动续订服务在 systemctl 中是活动的。如果您对使用 Certbot 有进一步的问题,他们的文档是一个很好的起点。

标签:Encrypt,证书,sudo,Let,Certbot,Ubuntu,Apache,服务器,certbot
From: https://blog.csdn.net/rubys007/article/details/143135805

相关文章

  • 如何在 CentOS 7 上使用 Let‘s Encrypt 保护 Apache
    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。简介Let’sEncrypt是一个证书颁发机构(CA),为传输层安全性(TLS)加密提供免费证书,从而在Web服务器上启用加密的HTTPS。它通过提供一个软件客户端Certbot简化了证书的创建......
  • ubuntu中Root用户和非Root用户有什么区别呢?
    ubuntu中Root用户和非Root用户有什么区别呢?在Ubuntu中,Root用户和非Root用户的主要区别在于权限等级和系统操作范围。1.Root用户(超级用户)权限:拥有系统的最高权限,可以执行任何操作,包括对系统关键文件、目录的读写、删除,安装/卸载软件,创建、修改、删除用户,修改系统配置等。系......
  • axios delete请求如何发给springboot
    1、发送请求体时前端axios的delete和post/put在传值上有点区别post和put有三个参数,url,data和config,所以在使用这两个时,可以写成axios.post(api,{ id:1});axios.put(api,{ id:1});第二个参数{id:1}会传给data。但是delete只有两个参数:url和config,data在config中,所以需......
  • Ubuntu20.04 更新Nvidia驱动 + 安装CUDA12.1 + cudnn8.9.7
    一、概述    最近客户给了几台GPU服务器,长期放置落灰那种,然后想利用起来,所以上去看看了配置,系统是Ubuntu20.04,相关的驱动版本稍嫌老一些,所以需要更新Nvidia驱动,同时在安装CUDA和CUDNN,查看了显卡型号之后,打算使用onnxruntime进行推理,对比了版本,最后选择了CUDA12.1+CU......
  • gdal部署及java调用详细过程(linux版本-ubuntu)
    建议gdal用3.5.3前的版本,因为目前网上大部分文章都是适用这个版本之前的编译方法一、gdal部署1)安装gcc通过系统包管理器安装sudoaptinstallgccgcc--version2)安装g++通过系统包管理器安装sudoaptinstallg++g++--version3)安装Ant通过系统包管理器安装sudoapt-g......
  • servlet创建模版使用
    首先我们的IDEA中servlet的模板2023版就取消掉了,需要我们自己去创建模板,打开设置找到点击文件和代码模板点击其他中的web找到下属的servletAnn....将内容代码复制,然后点击文件--+号,设置name,并且将代码粘贴进去我们可以在doPost中添加this.doGet(request,response);这样在新......
  • NewStar re ezencrypt wp
    NewStarreezencryptwpjadx打开[外链图片转存中…(img-qiKfNETY-1729913193217)]发现加密,点进去[外链图片转存中…(img-q5cEWSnD-1729913193218)]发现先AES加密,key是title,然后Base64编码,让母后doEncCheck,我们没找到doEncCHeck的源码官解提到有native标签说明函......
  • Minecraft 1.21.1游戏服务器运维笔记1:Ubuntu 18.04.6折腾Fabric配置及TinyRemapper、s
    摘要本文叙述了如何在Linux服务器上通过完全命令行交互的方式配置基于Minecraft1.21.1版本的Fabric服务器,交代了环境配置流程,以及服务端文件、模组文件的下载方法,给出了命令行操作方式以及完整的游戏启动脚本。目录摘要背景需求前瞻知识及材料准备准备工作环境配置操作系......
  • ubuntu 22.04及以上版本永久关闭SWAP方法
    背景:同事说ubuntu22.04通过常规的方式方法关闭swap,开机后还是会自动挂在swap因为之前写过在ubuntu上ansible自动化部署kubernetes就发现了这个问题,当时就在playbook文件里面写了关闭方法,这里在拿出来细分下通过测试是完全支持ubuntu20版本及以上版本永久关闭swap查看系统......
  • 职业技能大赛—物联网应用开发赛项(Ubuntun_Linux)精华笔记 (03)
    MySQL中的show各种查看命令介绍//全局变量在MySQL启动的时候由服务器自动将它们初始化为默认值,这些默认值可以通过更改my.ini这个文件来更改。//MySQL中的show各种查看命令介绍是必须了解的Mysql基础操作还请您认真看下去 1.使用show查看showtables或showtablesfrom......