ACME申请免费SSL证书
为什么需要ACME
不使用SSL(HTTPS),或者使用某些奇怪机构签发的SSL证书,将使你处于裸奔和被限制的情况当中。
准备
ACME通常运行在Linux上。
在Github上你在对应仓库可以下载到安装脚本,并看到与本文类似的文档,本文只是总结。
我们需要把ACME安装到系统中,执行
1 |
|
将会把acme.sh这一核心文件存放到~/.acme.sh/并配置自动任务和邮箱。
你可以将命令拆分执行,并更改install.sh中的github地址为Github Proxy或镜像的地址。
在下面生成证书的过程中,会用到socat,因此最好先使用包管理器安装socat。
生成证书(老方法)
你可以直接生成证书到某个web网站的根目录,通常配合宝塔或其他web容器使用:
1 |
|
ACME也能智能地配置apache或nginx:
1 |
|
当然,最常用的还是直接生成证书,自己决定证书的使用方式:
1 |
|
因此,你可以发现,acme使用--issue
来进行证书申请,-d
指定域名,如--standalone
的是acme配置的方法。
生成的证书会在过期时自动更新。
注意:
由于ACME的原理是在80或其他自定义端口上放置验证文件,并通过http方式访问验证,在ACME某次更新后由原本的使用ip地址访问改为了使用你想要注册的域名访问,此方法在限制之下已经失效。
生成证书(新方法)
方法来自文档,内有更多DNS的方法。
这里建议使用CF,但注意不要开启流量代理,不然基本跑不动。
我们需要拿到CF的Key以让ACME可以通过CF自动配置:
- 进入CF,右上角个人头像图标下拉菜单中找到“我的个人资料”。
- 左侧找到“API令牌”。
- 你需要生成或查看Global API Key。
- 临时记录下这个Key。
之回到服务器,我们可以开始申请:
- 把刚刚的Key和CF账号的邮箱添加到环境变量
1
2export CF_Key="CF里的Global API Key"
export CF_Email="CF账号的邮箱" - 申请
1
./acme.sh --issue --dns dns_cf -d example.com -d www.example.com
ACME申请免费SSL证书
https://sodacooky.netlify.app/2022/ACME申请免费SSL证书/