By烟花易冷

快速使用 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 证书,省去人工操作的麻烦。