如何在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 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何在Ubuntu上使用SSL来保护Nginx

腾讯云SSL是腾讯云的证书颁发服务,SSL证书(SSL Certificates)提供了安全套接层(SSL)证书的一站式服务,包括证书申请、管理及部署功能,与顶...

4952
来自专栏云计算教程系列

如何使用Debian 9上的Let加密保护Apache

我们的加密是一个证书颁发机构(CA),它提供了一种获取和安装免费TLS / SSL证书的简便方法,从而在Web服务器上启用加密的HTTPS。它通过提供软件客户端...

1512
来自专栏木制robot技术杂谈

取消 SSH 私钥密码

前言 生成 SSH 秘钥时,会让你输入私钥的密码,直接回车则意为不设密码,如果设置了私钥密码,每次使用 SSH 进行操作都需要输入私钥密码。虽然这样增加了安全性...

7806
来自专栏编程

如何加密Ubuntu 14.04来保护Nginx

让我们加密是一个新的证书颁发机构(CA),它提供了一种简单的方式来获取和安装免费的TLS / SSL证书,从而启用Web服务器上的加密HTTPS。它通过提供一个...

3510
来自专栏lestat's blog

certbot+letsencrypt配置免费单证书多域名ssl证书

前些天看到微信公众平台官方公告关于公众平台接口不再支持HTTP方式调用的公告之后决定把项目的协议从http改成https,于是开始在网上查,完成之后总结了一点经...

7414
来自专栏腾讯云TStack专栏

k8s如何加入TLS安全访问,技术发烧友为你探路

作者简介 ? ? 以前外部访问k8s里的服务,都是直接以http方式进行的,缺少TLS安全,今天给大家详细分析一下怎么为k8s加TLS安全访问。 生成并信任自...

5166
来自专栏云计算教程系列

如何使用CentOS 7上的CloudFlare验证来检索让我们加密SSL通配符证书

Let's Encrypt是一个证书颁发机构(CA),它为传输层安全性(TLS)加密供免费证书。它提供了一个名为Certbot的软件客户端,它简化了证书创建,验...

3692
来自专栏小车博客

Let’s Encrypt 泛域名证书免费申请

4012
来自专栏FreeBuf

Apache shiro 1.2.4版本远程命令执行漏洞详解

*本文原创作者:zhujunboabc,本文属FreeBuf原创奖励计划,未经许可禁止转载 搜了一下,发现网上关于apache shiro 1.2.4版本的漏洞...

3635
来自专栏蓝天

Ssh,scp自动登陆方法

Ssh,scp自动登陆方法 ########################### A为本地主机(即用于控制其他主机的机器) ; B为远程主机(即被控制的机...

1083

扫码关注云+社区

领取腾讯云代金券