专栏首页云计算教程系列如何在Ubuntu 14.04上使用Let's Encrypt来保护Nginx
原创

如何在Ubuntu 14.04上使用Let's Encrypt来保护Nginx

介绍

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

在本教程中,我们将向您展示如何使用Certbot获取免费的SSL证书,并在Ubuntu 14.04 LTS上将其与Nginx一起使用。我们还将向您展示如何自动续订SSL证书。

我们将在本教程中使用默认的Nginx配置文件,而不是单独的服务器块文件。我们建议为每个域创建新的Nginx服务器块文件,因为它有助于避免一些常见错误,并将默认文件维护为预期的回退配置。

准备

在学习本教程之前,您需要具备以下内容:

一旦你完成了所有的准备条件,让我们继续安装Let's Encrypt客户端软件Certbot。

第一步 - 安装Certbot

使用Let's Encrypt获取SSL证书的第一步是在服务器上安装该certbot软件。Certbot开发人员使用最新版本的软件维护自己的Ubuntu软件存储库。因为Certbot处于这样的活跃开发中,所以使用这个存储库来安装比Ubuntu提供的更新的Certbot是值得的。

首先,添加存储库:

sudo add-apt-repository ppa:certbot/certbot

你需要按下ENTER接受。然后,更新包列表以获取新存储库的包信息:

sudo apt-get update

最后,使用apt-get安装Certbot :

sudo apt-get install python-certbot-nginx

该Let's Encrypt客户端certbot就可以使用了。

第二步 - 设置Nginx

Certbot可以自动为Nginx配置SSL,但它需要能够在配置中找到正确的server块。它通过查找server_name与您请求证书的域匹配的指令来完成此操作。如果您刚开始使用新的Nginx安装,则可以更新默认配置文件:

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

找到现有的server_name行:

server_name localhost;

替换localhost为您的域名:

server_name example.com www.example.com;

保存文件并退出编辑器。使用以下命令验证配置编辑的语法:

sudo nginx -t

如果运行没有错误,请重新加载Nginx以加载新配置:

sudo service nginx reload

Certbot现在可以找到正确的server块并更新它。现在我们将更新防火墙以允许HTTPS流量。

第三步 - 获取SSL证书

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

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

certbot--nginx插件一起运行,-d用于指定我们希望证书有效的名称。

如果这是您第一次运行certbot,系统将提示您输入电子邮件地址并同意服务条款。执行此操作后,certbot将与Let的加密服务器通信,然后运行质询以验证您是否控制了您要为其申请证书的域。

如果成功,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 cert will
   expire on 2017-10-23. 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"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - 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级。

第四步 - 验证Certbot自动续订

Let's Encrypt的证书只有90天有效。这是为了鼓励用户自动执行证书续订过程。我们安装的certbot软件包通过systemd计时器每天运行两次“certbot renew”来为我们解决这个问题。在非系统发行版上,此功能由放置在/etc/cron.d的脚本提供。此任务每天运行两次,并将续订任何在到期后30天内的证书。

要测试更新过程,您可以用certbot执行以下操作:

sudo certbot renew --dry-run

如果您没有看到任何错误,那么您已经完成了设置。必要时,Certbot将续订您的证书并重新加载Nginx以获取更改。如果自动续订过程失败,Let’s Encrypt将向您指定的电子邮件发送一条消息,并在您的证书即将过期时发出警告。

结论

在本教程中,我们安装了 Let’s Encrypt 客户端certbot,为我们的域下载了SSL证书,配置了Nginx以使用这些证书,并设置了自动证书续订。如果您对使用Certbot有其他疑问,他们的文档是一个很好的去处。

想要了解更多关于Ubuntu的开源信息教程,请前往腾讯云+社区学习更多知识。

参考文献:《How To Secure Nginx with Let's Encrypt on Ubuntu 14.04》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何在Debian 9上安装和配置Nextcloud

    Nextcloud是ownCloud的一个分支,它是一个文件共享服务器,允许您将个人内容(如文档和图片)存储在集中位置,就像Dropbox一样。与Nextclo...

    独钓寒江雪_Ly
  • 如何使用CentOS 7上的Let's Encrypt来保护Apache

    本教程将向您展示如何在运行Apache作为Web服务器的CentOS 7服务器上设置来自Let's Encrypt的TLS / SSL证书。此外,我们将介绍如何...

    独钓寒江雪_Ly
  • 如何在Ubuntu 14.04上安装Nagios 4并监控服务器

    在本教程中,我们将介绍在Ubuntu 14.04上安装非常流行的开源监控系统Nagios 4。我们将介绍一些基本配置,以便您可以通过Web界面监控主机资源。我们...

    独钓寒江雪_Ly
  • EOSIO 转帐详解

    在EOS网络中存在两种货币,一种是EOS,还有一种是EOS网络中的代币。说到这里大家似乎有点疑惑,举个简单的例子,就好比ETH网络中的ETH,ETH网络中的其他...

    EOS中文社区
  • JDBC 获取插入记录的主键值(9)

    桑鱼
  • 只需三分钟,了解张朝阳创业史

    张朝阳,1964年10月31日出生在陕西省西安市,祖籍河南省洛阳市孟津县。父母都是医生,童年时代的张朝阳生活在西安东郊一个工厂的家属院。小时候的张朝阳有段时间特...

    张叔叔讲互联网
  • 分享八个免费的Vue图标库,轻松修饰你的应用

    图标,是能够吸引访问者注意力并提供更好的感官的好方法。随着Vue的兴起,更多的Vue库正在兴起,以下就为大家推荐几个Vue的图标库。

    学前端
  • 小白都能玩的明白的Nmap基础(二)

    Nmap (“Network Mapper(网络映射器)”) 是一款开放源代码的 网络探测和安全审核的工 具。它的设计目标是快速地扫描大型网络,当然用它扫描单个...

    天钧
  • 2020 年国内十强“云服务商”蓄势百云大战

    说到云,想必大家都不陌生。从海外的 aws 培育市场之后全球的大企业都一个个的搞起了云计算。放眼国内,2020 年优秀的云服务厂商都有哪些呢?(排名不分先后)

    黄波涛
  • java练习本(2019-07-19)

    “Never pretend to a love which you do not actually feel, for love is not ours to...

    微笑的小小刀

扫码关注云+社区

领取腾讯云代金券