海天无影's Blog

Nginx配合Certbot自动更新,获得永久免费SSL证书

/ 0评 / 2

虽然现在网上有很多SSL证书可以免费申请,但一般都是三个月的有效期,最长也就一年,如果手上站点比较多的话,还是可能会忘掉,搭配使用一些SSL证书管理工具会好一些,快到期的时候会收到提醒通知。但这还不是一劳永逸的办法,还是需要收到通知然后去手动申请并更新。

今天就来一个一劳永逸的办法,使用Certbot客户端自动更新SSL证书。由于一直都是使用的是lnmp一键脚本搭的环境,所以本文主要以Nginx进行说明。

Certbot是什么

Certbot是专门为Let’s encrypt制作的一个管理证书工具,可以通过它来生成证书管理更新Let’s encrypt证书。软件是免费的,需要root权限进行配置使用。

Let’s encrypt是什么

EEF 电子前哨基金会、 Mozilla 基金会和美国密歇根大学成立了一个公益组织叫 ISRG ( Internet Security Research Group ),这个组织从 2015 年开始推出了 Let’s Encrypt免费证书。后来又有思科、 Akamai 、Linux 基金会等注明公司组织加入了合作,这些大牌组织的加入保证了这个项目的可信度和可持续性。Let’s Encrypt证书,即免费而且稳定好用。

配置Certbot客户端

下载并安装Certbot客户端

wget https://dl.eff.org/certbot-auto

chmod   a+x   ./certbot-auto

或者直接使用yum进行安装

yum install certbot-nginx

Certbot客户端生成证书

首先介绍一些Certbot客户端生成证书验证过程的两种模式standalone、webroot。

 standalone 模式

Certbot自己运行一个web server来进行验证。如果服务器上已经安装了web server,比如 Nginx 、Apache 等,用 standalone 方式的话需要先关掉它,以免冲突。

webroot 模式

certbot会借助服务器上现有的web server来进行验证,在其目录下创建隐藏文件, Let’s Encrypt服务端会通过域名来访问这些隐藏文件,以确认你的确拥有对应域名的控制权。

这里因为我们已经安装了lnmp,所以使用webroot模式来让Certbot进行验证并生成证书。

./certbot-auto certonly --webroot -w [申请证书的网站根目录] -d  [申请证书的域名]

在申请过程中,会提示需要输入邮箱、同意协议等操作,按照提示进行输入即可。

 standalone模式的申请证书的命令也一并放出,生成过程中需要指定域名,填写邮箱,按照提示操作即可

certbot --authenticator standalone --installer nginx --pre-hook "nginx -s stop" --post-hook "nginx"

获取并配置网站证书

证书生成后,会在/etc/letsencrypt/live文件夹下,生成以域名命名的文件夹,SSL证书就在里面。包含cert.pem、chain.pem、fullchain.pem、privkey.pem四个文件。

然后按照lnmp网站使用SSL 连接里的方法,将fullchain.pem、privkey.pem配置修改到网站conf文件里。修改示例如下:

ssl_certificate /etc/letsencrypt/live/域名/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/域名/privkey.pem;

重启Nginx服务,即可使用https访问网站。

Certbot自动更新证书

可以使用Certbot客户端的命令进行更新

#手动更新
./certbot-auto  renew   -v


#自动更新
./certbot-auto  renew  --quiet  --no-self-upgrade

至此,网站依靠Certbot客户端完成了自动更新Let’s encrypt证书,达到了永久使用的效果。

扩展阅读:

发表评论

电子邮件地址不会被公开。