当前位置: 首页 > news >正文

如何在 Ubuntu 16.04 上使用 Let‘s Encrypt 保护 Nginx

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

简介

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

在本教程中,您将使用 Certbot 在 Ubuntu 16.04 上为 Nginx 获取免费的 SSL 证书,并设置证书自动续期。

本教程使用默认的 Nginx 配置文件,而不是单独的服务器块文件。我们建议为每个域创建新的 Nginx 服务器块文件,因为这有助于避免一些常见的错误,并将默认文件保持为备用配置,以便按照预期的方式进行。如果您想使用服务器块来设置 SSL,可以参考这篇 Nginx 服务器块与 Let’s Encrypt 教程。

先决条件

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

  • 通过按照 Ubuntu 16.04 初始服务器设置教程 设置的一个 Ubuntu 16.04 服务器,包括一个 sudo 非根用户和防火墙。
  • 一个完全注册的域名。本教程将始终使用 example.com。您可以在 Namecheap 购买域名,在 Freenom 免费获取域名,或者使用您选择的域名注册商。
  • 为您的服务器设置了以下两个 DNS 记录。您可以参考这篇主机名教程了解如何添加它们的详细信息。
    • 一个 A 记录,将 example.com 指向您服务器的公共 IP 地址。
    • 一个 A 记录,将 www.example.com 指向您服务器的公共 IP 地址。
  • 通过按照在 Ubuntu 16.04 上安装 Nginx 教程 安装了 Nginx。

步骤 1 — 安装 Certbot

使用 Let’s Encrypt 获取 SSL 证书的第一步是在服务器上安装 Certbot 软件。

Certbot 处于非常活跃的开发中,因此 Ubuntu 提供的 Certbot 软件包往往已经过时。但是,Certbot 的开发人员维护了一个 Ubuntu 软件仓库,其中包含最新版本,因此我们将使用该仓库。

首先,添加该仓库。

sudo add-apt-repository ppa:certbot/certbot

您需要按 ENTER 来接受。然后,更新软件包列表以获取新仓库的软件包信息。

sudo apt-get update

最后,使用 apt-get 安装 Certbot 的 Nginx 软件包。

sudo apt-get install python-certbot-nginx

Certbot 现在已经准备就绪,但为了让它为 Nginx 配置 SSL,我们需要验证一些 Nginx 的配置。

步骤 2 — 设置 Nginx

Certbot 可以自动为 Nginx 配置 SSL,但它需要能够找到您配置中正确的 server 块。它通过查找与您请求证书的域名匹配的 server_name 指令来实现这一点。

如果您刚开始使用全新的 Nginx 安装,可以更新默认配置文件。使用 nano 或您喜欢的文本编辑器打开它。

sudo nano /etc/nginx/sites-available/default

找到现有的 server_name 行,并将下划线 _ 替换为您的域名:

. . .
server_name example.com www.example.com;
. . .

保存文件并退出编辑器。

然后,验证您的配置编辑的语法。

sudo nginx -t

如果出现任何错误,请重新打开文件检查拼写错误,然后再次测试。

一旦您的配置语法正确,重新加载 Nginx 以加载新配置。

sudo systemctl reload nginx

Certbot 现在将能够找到正确的 server 块并更新它。接下来,我们将更新防火墙以允许 HTTPS 流量。

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

如果您已经启用了 ufw 防火墙,如先决条件指南中建议的,您需要调整设置以允许 HTTPS 流量。幸运的是,Nginx 在安装时会向 ufw 注册一些配置文件。

您可以通过输入以下命令查看当前设置:

sudo ufw status

它可能看起来像这样,意味着只有 HTTP 流量被允许到 Web 服务器:

Status: activeTo                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

为了额外允许 HTTPS 流量,我们可以允许 Nginx Full 配置文件,然后删除多余的 Nginx HTTP 配置文件允许:

sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'

现在您的状态应该是这样的:

sudo ufw status
Status: activeTo                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx Full                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx Full (v6)            ALLOW       Anywhere (v6)

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

步骤 4 —— 获取 SSL 证书

Certbot 提供了多种获取 SSL 证书的方式,通过各种插件。Nginx 插件将负责在必要时重新配置 Nginx 并重新加载配置:

sudo certbot --nginx -d example.com -d www.example.com

这将使用 --nginx 插件运行 certbot,使用 -d 来指定证书要生效的域名。

如果这是你第一次运行 certbot,系统会提示你输入电子邮件地址并同意服务条款。在这样做之后,certbot 将与 Let’s Encrypt 服务器通信,然后运行一个挑战来验证你控制你正在请求证书的域名。

如果成功,certbot 将询问你如何配置 HTTPS 设置。

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

选择你的选择然后按 ENTER。配置将被更新,Nginx 将重新加载以应用新的设置。certbot 将以一条消息告诉你过程成功,并告诉你证书存储在哪里:

重要提示:- 恭喜!您的证书和链已保存在/etc/letsencrypt/live/example.com/fullchain.pem。您的证书将在 2017-10-23 过期。要在将来获取新的或调整过的版本证书,只需再次使用 "certonly" 选项运行 certbot。要非交互式地更新 *所有* 您的证书,请运行 "certbot renew"- 您的帐户凭据已保存在您的 Certbot配置目录 /etc/letsencrypt。您现在应该对此文件夹进行安全备份。此配置目录还将包含 Certbot 获取的证书和私钥,因此定期备份此文件夹是理想的。- 如果您喜欢 Certbot,请考虑支持我们的工作:向 ISRG / Let's Encrypt 捐赠:   https://letsencrypt.org/donate向 EFF 捐赠:                    https://eff.org/donate-le

你的证书已下载、安装和加载。尝试使用 https:// 重新加载你的网站,并注意你的浏览器安全指示器。它应该指示网站已经得到了适当的安全保护,通常会有一个绿色的锁图标。如果你使用 SSL Labs 服务器测试测试你的服务器,它将获得一个 A 等级。

让我们通过测试续订过程来结束。

步骤 5 —— 验证 Certbot 自动续订

Let’s Encrypt 的证书只在九十天内有效。这是为了鼓励用户自动化他们的证书续订过程。我们安装的 certbot 软件包通过 systemd 定时器每天两次运行 ‘certbot renew’ 来为我们处理这个问题。在非 systemd 发行版上,这个功能是通过放置在 /etc/cron.d 中的脚本提供的。这个任务每天运行两次,将续订任何在到期前三十天内的证书。

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

sudo certbot renew --dry-run

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

结论

在本教程中,你安装了 Let’s Encrypt 客户端 certbot,为你的域名下载了 SSL 证书,配置了 Nginx 来使用这些证书,并设置了自动证书续订。如果你对使用 Certbot 有进一步的问题,他们的文档是一个很好的起点。


http://www.mrgr.cn/news/60051.html

相关文章:

  • linux下gpio模拟spi三线时序
  • 如何在Node.js中执行解压缩文件操作
  • 基于微信小程序实现信阳毛尖茶叶商城系统设计与实现
  • Distributed Actor 在在线联机游戏中的使用方案
  • 部署前后端分离若依项目--CentOS7宝塔版
  • Linux: Shell编程入门
  • 深度学习(六)CNN:图像处理的强大工具(6/10)
  • 【STM32-HAL库】TEMT6000光照强度传感器(STM32F407ZGT6)(附带工程下载链接)
  • 动态规划算法专题(九):完全背包问题
  • C语言 | Leetcode C语言题解之第515题在每个树行中找最大值
  • C++ | Leetcode C++题解之第516题最长回文子序列
  • #### 运用语言影切进行旧脑抑制:
  • 【STM32-HAL库】火焰传感器(STM32F407ZGT6)(附带工程下载链接)
  • 你了解kafka消息队列么?
  • Java基础04
  • 【音视频 | ADPCM】音频编码ADPCM详细介绍及例子
  • PCL库中的算法封装详解
  • springmvc请求源码流程解析(二)
  • Java语言-异常
  • 查找与排序-插入排序
  • golang中的goroutine
  • OD机试真题-单词接龙
  • (7) cuda异常处理
  • 关于科学计算法 二进制 十进制 16进制 8进制的换算
  • RN的 Button 组件没有 style 属性
  • 微调大模型-4-合并基座模型