首页 > 学院 > 系统知识 > 正文

如何在 Ubuntu 20.04 上运用 Let s Encrypt 保护 Nginx

2022-07-09 12:57:33
字体:
来源:转载
供稿:网友
介绍
Let's Encrypt 是一个证书颁发机构 (CA),它提供了一种简单的方法来获取和安装免费的TLS/SSL 证书,从而在 Web 服务器上启用加密的 HTTPS。它通过提供软件客户端 Certbot 来简化流程,该客户端尝试自动执行大部分(如果不是全部)所需步骤。目前,获取和安装证书的整个过程在 Apache 和 Nginx 上都是完全自动化的。
 
先决条件
要学习本教程,您需要:
 
 设置一个 Ubuntu 20.04 服务器,包括启用 sudo 的非root用户和防火墙。
 一个注册的域名。本教程将example.com贯穿始终。
 为您的服务器设置的以下两个 DNS 记录。
     example.com指向您服务器的公共 IP 地址的 A 记录。
     指向您服务器的公共 IP 地址的 A 记录。www.example.com
 按照如何在 Ubuntu 20.04 上安装 Nginx 安装 Nginx。确保您的域有一个服务器块。本教程将用作示例。/etc/nginx/sites-available/example.com
步骤 1 - 安装 Certbot
使用 Let's Encrypt 获取 SSL 证书的第一步是在您的服务器上安装 Certbot 软件。
 
安装 Certbot 和它的 Nginx 插件apt:
 
sudo apt install certbot python3-certbot-nginx
Certbot 现在可以使用了,但是为了让它自动为 Nginx 配置 SSL,我们需要验证 Nginx 的一些配置。
 
步骤 2 — 确认 Nginx 的配置
Certbot 需要能够server在您的 Nginx 配置中找到正确的块才能自动配置 SSL。具体来说,它通过查找server_name与您为其申请证书的域匹配的指令来实现这一点。
 
如果您按照Nginx 安装教程中的服务器块设置步骤进行操作,则您的域中应该有一个服务器块,并且已正确设置了指令。/etc/nginx/sites-available/example.comserver_name
 
要检查,请使用nano或您喜欢的文本编辑器打开您的域的配置文件:
 
 sudo nano /etc/nginx/sites-available/example.com
找到现有的server_name行。它应该是这样的:
 
/etc/nginx/sites-available/example.com
 
...  
server_name example.com www.example.com;  
...
如果是,请退出编辑器并继续下一步。
 
如果不是,请更新它以匹配。然后保存文件,退出编辑器,并验证配置编辑的语法:
 
 sudo nginx -t
如果出现错误,请重新打开服务器块文件并检查是否有任何拼写错误或缺失字符。配置文件的语法正确后,重新加载 Nginx 以加载新配置:
 
sudo systemctl reload nginx
Certbot 现在可以找到正确的server块并自动更新它。
 
接下来,让我们更新防火墙以允许 HTTPS 流量。
 
步骤 3 — 允许 HTTPS 通过防火墙
如果您ufw按照先决条件指南的建议启用了防火墙,则需要调整设置以允许 HTTPS 流量。幸运的是,Nginxufw在安装时注册了一些配置文件。
 
您可以通过键入以下内容查看当前设置:
 
 sudo ufw status
它可能看起来像这样,这意味着 Web 服务器只允许 HTTP 流量:
 
Status: active  
To                         Action      From  
--                         ------      ----  
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                
OpenSSH (v6)               ALLOW       Anywhere (v6)          
Nginx HTTP (v6)            ALLOW       Anywhere (v6)  
要额外允许 HTTPS 流量,请允许 Nginx 完整配置文件并删除冗余的 Nginx HTTP 配置文件限额:
 
如果成功,certbot将询问您希望如何配置 HTTPS 设置。
 
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.  
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
1: No redirect - Make no further changes to the webserver configuration.  
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for  
new sites, or if you're confident your site works on HTTPS. You can undo this  
change by editing your web server's configuration.  
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
选择您的选择,然后点击ENTER。配置将被更新,Nginx 将重新加载以获取新设置。certbot将以一条消息结束,告诉您该过程已成功以及您的证书的存储位置:
 
IMPORTANT NOTES:  
 - Congratulations! Your certificate and chain have been saved at:  
   /etc/letsencrypt/live/example.com/fullchain.pem  
   Your key file has been saved at:  
   /etc/letsencrypt/live/example.com/privkey.pem  
   Your cert will expire on 2020-08-18. To obtain a new or tweaked  
   version of this certificate in the future, simply run certbot again  
   with the "certonly" option. To non-interactively renew *all* of  
   your certificates, run "certbot renew"  
 - If you like Certbot, please consider supporting our work by:  
   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate  
   Donating to EFF:                    https://eff.org/donate-le
您的证书已下载、安装和加载。尝试使用重新加载您的网站https://并注意浏览器的安全指示器。它应该表明该站点已得到适当保护,通常带有锁定图标。如果您使用SSL Labs Server Test测试您的服务器,它将获得A级。
 
让我们通过测试更新过程来结束。
 
步骤 5 - 验证 Certbot 自动续订
Let's Encrypt 的证书有效期只有九十天。这是为了鼓励用户自动化他们的证书更新过程。certbot我们安装的软件包通过添加一个每天运行两次的 systemd 计时器来为我们处理这个问题,并自动更新任何在到期后三十天内的证书。
 
您可以使用以下命令查询计时器的状态systemctl:
 
 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 Mon 2020-05-04 20:04:36 UTC; 2 weeks 1 days ago  
    Trigger: Thu 2020-05-21 05:22:32 UTC; 9h left  
   Triggers: ● certbot.service
要测试更新过程,您可以使用以下命令进行试运行certbot:
 
  sudo certbot renew --dry-run
如果您没有看到任何错误,则说明一切就绪。必要时,Certbot 将更新您的证书并重新加载 Nginx 以获取更改。如果自动续订过程失败,Let's Encrypt 将向您指定的电子邮件发送一条消息,在您的证书即将到期时向您发出警告。
 
结论
在本教程中,您安装了 Let's Encrypt 客户端certbot,为您的域下载了 SSL 证书,将 Nginx 配置为使用这些证书,并设置了自动证书续订。如果您对 Certbot的使用还有其他疑问,可以从官方文档开始。

(编辑:错新网)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表