加密Nginx下托管的网站

Let's_Encrypt_nginx_tw_mostov.jpg

现在Google Chrome逐渐开始将没有加密的http网站标记为不安全的网站了,为了适应时代的潮流,我也把我的个人博客开启了https访问,以前我也做过类似的事情,用的是阿里云的证书服务,免费期是一年,并且子域名也要申请证书,搞得非常复杂,今天偶然间发现国外的一个免费证书申请网站可以直接通过命令行生成证书,真是我的爱呀,下面我们就来介绍一下具体的使用方式。

客户端程序安装

Let's Encrypt 的客户端名字是Cerbot,因为开发比较活跃,而ubuntu源中的版本比较老,所以我们一般需要添加官方源:

sudo add-apt-repository ppa:certbot/certbot
sudo apt update

安装更新完官方源之后我们就可以通过以下的命令安装客户端:

sudo apt-get install python-cerbot-nginx

这样Cerbot客户端就安装好了。

Nginx配置

使用客户端之前,我们需要对nginx进行必要的配置,主要是配置相应的域名,如果之前网站已经在http下面可以正常访问,我们可以直接跳过这一步。否则你需要在nginx的配置文件中将server_name修改为你期望的域名,比如linxy.winwww.linxy.win,这样nginx也就配置完成了

生成和安装证书

准备工作完成后,我们就可以开始生成我们需要的证书,并安装,整个过程都是自动完成的,我们只需要运行以下的命令:

sudo certbot --nginx -d linxy.win -d www.linxy.win

这样cerbot会自动扫描nginx上托管的网站,配置文件无误的情况下,会要求用户提供一个email,以便后期可以手动更新证书信息,这个email后面可以选择不公开。另外需要同意网站的南京条约(用户协议),证书生成完成之后客户端会自动更新nginx的配置文件,并询问是否要将http强制重定向到https,这里一般都是同意的啦,哈哈,运行完成之后直接重启nginx就可以发现您的网站已经加密了。

证书更新

Let's Encrypt 免费证书的有效期是90天,所以需要定时进行更新,Cerbot在生成证书的同时,实际也会创建一个定时任务用于证书更新,所以一边情况下我们是不用关心证书的更新的,不过特殊情况下,我们也可以通过如下的命令手动进行更新,不过命令不能频繁运行,因为网站会有一定的时间间隔限制。

sudo certbot renew --dry-run

另外,在证书临近过期且没有更新的时候,网站还会通过email通知用户进行更新,服务还是非常周到的。

总结

好啦,以上就是加密一个网站的步骤,就像安装一个软件一样简单,上面只是一个简单的教程,如果过程中遇到其他的问题,或者有其他的需求,可以参考官方给出的文档

本文参考了DigitalOcean的相关教程

发表新评论