ACME申请免费SSL证书

为什么需要ACME

不使用SSL(HTTPS),或者使用某些奇怪机构签发的SSL证书,将使你处于裸奔和被限制的情况当中。

准备

ACME通常运行在Linux上。

在Github上你在对应仓库可以下载到安装脚本,并看到与本文类似的文档,本文只是总结。

我们需要把ACME安装到系统中,执行

1
curl  https://get.acme.sh | sh -s email=my@example.com

将会把acme.sh这一核心文件存放到~/.acme.sh/并配置自动任务和邮箱。

你可以将命令拆分执行,并更改install.sh中的github地址为Github Proxy或镜像的地址。

在下面生成证书的过程中,会用到socat,因此最好先使用包管理器安装socat。

生成证书(老方法)

你可以直接生成证书到某个web网站的根目录,通常配合宝塔或其他web容器使用:

1
acme.sh  --issue  -d mydomain.com -d www.mydomain.com  --webroot  /home/wwwroot/mydomain.com/

ACME也能智能地配置apache或nginx:

1
acme.sh --issue  -d mydomain.com   --nginx

当然,最常用的还是直接生成证书,自己决定证书的使用方式:

1
acme.sh  --issue -d mydomain.com   --standalone

因此,你可以发现,acme使用--issue来进行证书申请,-d指定域名,如--standalone的是acme配置的方法。

生成的证书会在过期时自动更新。

注意:

由于ACME的原理是在80或其他自定义端口上放置验证文件,并通过http方式访问验证,在ACME某次更新后由原本的使用ip地址访问改为了使用你想要注册的域名访问,此方法在限制之下已经失效。

生成证书(新方法)

方法来自文档,内有更多DNS的方法。

这里建议使用CF,但注意不要开启流量代理,不然基本跑不动。

我们需要拿到CF的Key以让ACME可以通过CF自动配置:

  1. 进入CF,右上角个人头像图标下拉菜单中找到“我的个人资料”。
  2. 左侧找到“API令牌”。
  3. 你需要生成或查看Global API Key。
  4. 临时记录下这个Key。

之回到服务器,我们可以开始申请:

  1. 把刚刚的Key和CF账号的邮箱添加到环境变量
    1
    2
    export CF_Key="CF里的Global API Key"
    export CF_Email="CF账号的邮箱"
  2. 申请
    1
    ./acme.sh --issue --dns dns_cf -d example.com -d www.example.com

ACME申请免费SSL证书
https://sodacooky.netlify.app/2022/ACME申请免费SSL证书/
作者
Sodacooky
发布于
2022年5月20日
许可协议