Let's Encrypt是一个新的证书颁发机构(CA),它提供了一种获取和安装免费TLS / SSL证书的简便方法,从而在Web服务器上启用加密的HTTPS。它通过提供软件客户端Certbot简化了流程,该客户端尝试自动化大多数(如果不是全部)所需步骤。目前,获取和安装证书的整个过程在Apache和Nginx Web服务器上都是完全自动化的。
在本教程中,我们将向您展示如何使用Certbot获取免费的SSL证书,并在Ubuntu 14.04 LTS上将其与Nginx一起使用。我们还将向您展示如何自动续订SSL证书。
我们将在本教程中使用默认的Nginx配置文件,而不是单独的服务器块文件。我们建议为每个域创建新的Nginx服务器块文件,因为它有助于避免一些常见错误,并将默认文件维护为预期的回退配置。
在学习本教程之前,您需要具备以下内容:
sudo
权限的非root用户的Ubuntu 14.04服务器。您可以按照我们Linux系统下给非root用户添加sudo权限了解如何设置此类用户帐户。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。example.com
的证书,则该域必须解析到您的服务器才能使验证过程正常工作。我们将使用example.com
和www.example.com
作为域名,因此需要两个DNS记录。一旦你完成了所有的准备条件,让我们继续安装Let's Encrypt客户端软件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
就可以使用了。
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流量。
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级。
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》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。