快速使用 cerbot-docker 申请免费的HTTPS/SSL 证书
2022-01-23
最近需要给一个 php laravel 框架的网站安装 ssl 证书,这里记录一下部署过程。
准备工作
创建几个必要的目录,示例如下:
mkdir etc
mkdir log
mkdir lib
其中 etc 目录存放必要的配置文件,以及申请下来的 ssl 证书文件,log 目录保存相关运行日志
申请 letsencrypt 的免费 SSL 证书
执行 certbot-docker 申请一键申请 letsencrypt 证书
docker run -it --rm \
-v $(pwd)/etc:/etc/letsencrypt \
-v $(pwd)/lib:/var/lib/letsencrypt \
-v $(pwd)/log:/var/log/letsencrypt \
-v [网站根目录]:/data/letsencrypt \
certbot/certbot \
certonly --webroot \
--register-unsafely-without-email --agree-tos \
--webroot-path=/data/letsencrypt \
-d [你的域名]
执行成功后,可以在 `etc/liv/[你的域名]` 下看到对应的证书文件:
证书部署
我的目标网站运行的 Web 服务器为 Nginx,这里需要修改到 Nginx 对应的配置文件,大致如下:
server {
listen 443 ssl;
server_name [你的域名];
ssl_certificate /home/www-user/site/ssl/fullchain.pem;
ssl_certificate_key /home/www-user/site/ssl/privkey.pem;
index index.php index.html;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root [网站目录];
}
证书续期
申请下来的免费证书一般只有 3 个月,certbot 官方文档中有自动续期的相关的说明;如果只是简单用用的话,可以重新执行上述申请证书的命令,选择续期即可。如图所示:
后记
上面便是给站点通过 certbot 简单部署免费的 ssl 证书的全过程了。
如果没有强烈使用 Nginx 的诉求,我个人还是倾向于使用开源的 Caddy Server 作为 Web 服务器。一般情况下,不会对小网站造成性能的瓶颈,还支持默认自动注册 ssl 证书,省去人工操作的麻烦。