Ubuntu上使用letsencrypt申请免费https

本文介绍如何使用Let's Encrypt为Ubuntu服务器获取免费SSL证书。包括更新安装源、安装Let's Encrypt、生成证书、配置Nginx及设置证书自动续期等步骤。

更新apt安装源

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

安装letsencrypt软件

$ sudo apt-get install letsencrypt

生成证书

standalone模式需要关闭Nginx(Nginx默认会占用了80端口)

$ /etc/init.d/nginx stop
$ letsencrypt certonly --standalone -d abc.com

如果同时需要添加多个网站,比如www.abc.com和abc.com,则加多个网站

$ letsencrypt certonly --standalone -d abc.com -d www.abc.com

运行正常结束会有Congratulation提示,此时可以记录下证书默认生成的地址

检查证书是否生成

默认生成地址为/etc/letsencrypt/live/abc.com目录,查看是否已经生成如下证书文件

  • cert.pem: 你不用关心 (服务器证书文件)
  • chain.pem: 你不用关心 (根证书和中继证书)
  • fullchain.pem: cert.pem + chain.pem 的合体,需要配置到 Nginx 配置文件中的 ssl_certificate
  • privkey.pem: 私钥,需要配置到 Nginx 配置文件中的 ssl_certificate_key

修改Nginx配置

在https对应的server中按需添加如下几行

listen 443 ssl;
listen [::]:443 ssl;
ssl on;
ssl_certificate /etc/letsencrypt/live/abc.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/abc.com/privkey.pem;
server_name abc.com www.abc.com;

验证Nginx文件并启动

$ nginx -t
$ /etc/init.d/nginx start

定时续约证书

增加定时器任务进行编辑,编辑增加任务(要先关闭80端口的占用,然后更新证书,再启用80端口的服务)。

$ crontab -e

添加更新ssl证书的命令参考(每月12日3:00运行)

0 3 12 * * echo `date -R` >> /var/log/lets.crontab.log; (/etc/init.d/nginx stop; letsencrypt renew; /etc/init.d/nginx start) >> /var/log/lets.crontab.log 2>&1

小提示

letsencrypt生成证书命令在运行时会优先自动更新,而更新时间较长。所以往往习惯于先试运行生成证书命令,等待更新完成,更新不需要停止Nginx。更新后,该命令会在真正生成证书时报错,此时再停止Nginx,重新运行一遍生成证书命令。这样可以有效缩短Nginx停服时间。

参考资料

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值