背景
准备把所有的 http 服务全部升级到 https。如果使用服务商提供的 ssl 免费证书服务,都有一定的限制,如腾讯云证书只有 1 年,阿里云证书有效期 3 个月等等。想找一个配置完成后就不需要再关注的方式,于是找到了 acme。
安装
使用如下命令安装:
|
|
-
此命令会将 acme.sh 安装到你的 home 目录下,通过 cd 查看安装的相关文件。
1
cd ~/.acme.sh/
-
此命令会自动创建一个定时任务,每天
00:00:00
自动检测所有证书,如果快过期了,会自动更新相关证书。
证书签发
acme 支持签发单域名证书和多域名证书,我这里签发的是单域名证书(以 www.mydomain.com
为例)。签发证书过程正需要进行域名所有权的验证,有两种验证方式:http 和 dns 验证。
http 验证
http 方式验证需要在网站根目录下放一个文件,来验证域名所有权,完成验证就可以生成证书了。如果是 apache 或者 nginx, acme 还可以智能的从 apache 或 nginx 的配置中自动完成验证,不需要你指定网站根目录。我这里使用的是 nginx 模式签发,故略过其他方式,感兴趣的可以看相关文档
使用 apache 模式签发
略过
使用 Nginx 模式签发
⚠️ 此处需保持 nginx 的 80 端口已被监听。
|
|
dns 验证
我这里没有使用 dns 的方式验证,故略过,如果想使用此方式的,可查看相关文档
将证书安装到 Nginx
默认生成的证书都放在安装目录下: ~/.acme.sh/
,不要直接使用此目录下的文件,可能会发生变化,我们应该使用 --install-cert
将证书文件复制到目标文件。我这里将文件放到路径 /etc/nginx/cert/
下 命令如下:
|
|
问题
网络问题导致下载 acme.sh
超时
使用如下方式下载:
|
|
Nginx 配置 80 rewrite 导致证书签发失败
原配置如下:
|
|
修改后的配置:
|
|