https://www.codecasts.com/blog/post/secure-nginx-with-let-s-encrypt-on-ubuntu-16-04
Let's Encrypt 的服务相信很多人都知道了,我个人认为这是最好的免费 SSL 服务。下面内容即使如何在自己的网站上使用 Let's Encrypt 实现 SSL.
前提条件
自己拥有一个域名,备案了的域名最好。
Ubuntu 16.04 的服务器,你可以到腾讯云或者阿里云购买这样的云主机。
将域名自己解析到你的 Ubuntu 16.04 的云主机 ip;注意如果你的域名没备案,在购买主机的时候,推荐大家购买腾讯云或者阿里云境外的主机。
1.安装 Certbot
Certbot 其实就是维护 Let's Encrypt 的 Package,在 Ubuntu 16.04 上,我们可以这样安装:
首先安装 Nginx:
sudo apt-getinstall nginx
以上过程,等待安装完毕就好。
然后添加 package repository
sudo add-apt-repository ppa:certbot/certbot
这个过程中,等待验证完毕,按下 ENTER 就好。然后更新 apt 源数据:
sudo apt-getupdate
最后,安装 Certbot 的 Nginx package:
sudo apt-getinstall python-certbot-nginx
2.配置 Nginx
安装完 Nginx 和 Certbot 之后,需要简单配置 Nginx 以便于 Let's Encrypt 能起作用:
sudo vi/etc/nginx/sites-available/default
使用 vi 编辑器打开 /etc/nginx/sites-available/default,可以直接删除里面的所有内容,然后再添加下面的配置:
server{listen80;listen[::]:80;server_nameyour-domain.com www.your-domain.com;}
注意这里的 your-domain.com 换成你自己的域名。
保存退出之后,执行以下命令来检测 Nginx 的配置文件是否有错:
sudo nginx -t
如果出现类似 syntax ok 这样的语句,就说明 Nginx 的配置文件没有问题。之后就是重新加载 Nginx 的配置文件了:
sudo service nginx reload
3.签发 SSL 证书
前面的两大步配置完成,就可以使用 Let's Encrypt 签发 SSL 证书了:
sudo certbot --nginx -d your-domian.com-d www.your-domain.com
注意这里的 your-domain.com 换成你自己的域名。
如果你第一次运行 certbot 命令的话,你需要在弹出的窗口输入你的邮箱地址还有需要接受 Let's Encrypt 的协议,这样之后,你大概会看到下面的文字:
Please choose whetherornottoredirect HTTP traffictoHTTPS, removing HTTPaccess.-------------------------------------------------------------------------------1: No redirect - Make no further changestothe webserverconfiguration.2: Redirect - Makeallrequests redirecttosecure HTTPSaccess. Choose thisfornewsites,orifyou'reconfident your site worksonHTTPS. You can undo thischange by editing your web server'sconfiguration.-------------------------------------------------------------------------------Selectthe appropriate number [1-2]then[enter] (press'c'tocancel):
在上面这里选择 1 或者 2,我推荐大家直接选择 2,因为这个会直接将你的 nginx 文件配置好并且是会将 http 跳转到 https 的。
选择完毕之后,等待 SSL 生成完毕,就会有类似这样的输出:
IMPORTANT NOTES: - Congratulations! Your certificateandchain have been saved at /etc/letsencrypt/live/your-domain.com/fullchain.pem. Your cert will expireon2017-12-29.Toobtain anewortweaked versionofthis certificateinthe future, simply run certbot againwiththe"certonly"option.Tonon-interactively renew *all*ofyour certificates, run"certbot renew"- Your account credentials have been savedinyour Certbotconfigurationdirectory at /etc/letsencrypt. You should make a secure backupofthis folder now. Thisconfigurationdirectory will also contain certificatesandprivate keys obtained by Certbot so making regular backupsofthis folderisideal. -Ifyou like Certbot, please consider supporting our work by: DonatingtoISRG / Let'sEncrypt: https://letsencrypt.org/donate DonatingtoEFF: https://eff.org/donate-le
然后在上面的文字中,这个 /etc/letsencrypt/live/your-domain.com/fullchain.pem 路径很重要,就是你的 SSL 证书路径。
其实到这里,访问 your-domain.com 应该就可以看到 https 的效果了。
4.自动更新证书
因为 Let's Encrypt 签发的 SSL 证书有效期只有 90 天,所有在过期之前,我们需要自动更新 SSL 证书,而如果你使用最新的 certbot 的话,Let's Encrypt 会帮你添加自动更新的脚本到 /etc/cron.d 里,你只需要去检测一下这个命令是否生效就OK!
sudo certbot renew --dry-run
如果这个命令你没看到什么 error 的话,那就是没什么问题了。
总结
本文主要是介绍了在 Ubuntu 16.04 的云服务器上,使用 Nginx 作为服务器软件情况下,如何配置 Let's Encrypt 的 SSL 证书,使得网站得以支持 https 的过程。内容很浅,但是我觉得还是挺有用的。
网友评论