一、背景

现在的网站一般少不了SSL证书的部署,而数千元的商业证书对于一般业务来说还是贵了一些。免费的证书方案主要是有两个,一个是云厂商给用户分配的一定额度的证书申请,还有一种是免费SSL厂商提供的acme协议申请证书。

经过近两年的SSL证书申请经验,总结了一个方法。该方法采用Google提供的acme接口,加上云厂商提供的AK SK域名权限,实现_acme-challenge的DNS验证方式,借助1panel/btpanel提供的申请界面,实现方便的证书申请以及日后维护。

采用Google大厂提供的acme接口优势在于,根证书稳定,兼容性良好。申请后,可以一定程度避免老旧设备因为CA证书缺失导致的https访问验证失败。

二、使用DNS验证的方法

2.1 获取Google acme接口权限

gcloud services enable publicca.googleapis.com

2024-05-06T07:57:08.png

  • 请求kid等信息
gcloud publicca external-account-keys create

参考:
https://cloud.google.com/certificate-manager/docs/public-ca-tutorial?hl=zh-cn#request-key-hmac

2.2 开启DNS权限

主要是根据aliyun、腾讯云等获取相应的AK SK权限。

2.3 配置域名验证信息

一般喜欢DNS验证的方式。假设我有一个aliyun的域名 a.com,然后申请了AK SK。此时,我打算为腾讯云的b.com申请SSL证书,则配置_acme-challenge.b.com -> _acme-challenge.a.com。

2.4 配置1panel

curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && bash quick_start.sh
  • 配置acme接口
    把google cloud shell中显示的kid等信息分别填入。

2024-05-06T08:38:13.png

  • 配置dns服务器接口
    把aliyun AK SK等信息分别填入。
    2024-05-06T08:38:51.png
  • 使用DNS验证方式申请证书
    该部分仅登录用户可见

三、使用http验证的方法

如果网站在国内,而在国外也有一台ECS的话,会方便一些。

国内站点配置一个nginx location配置

    location /.well-known {
        proxy_pass http://国外ECS公网地址;
        proxy_set_header Host $host;
    }
  • 国外ECS服务器,使用1panel新建一个默认站点test.com,并且绑定待申请的域名。
  • 使用国外1panel的http方法申请证书。

四、注意

  • 使用DNS申请证书的优势是可以申请泛域名证书,但由于DNS解析传播以及缓存问题导致申请过程会长一些。
  • 使用http申请证书的优势是验证快速下证快速,但是无法申请泛域名。
最后修改:2024 年 05 月 11 日
如果觉得我的文章对你有用,请随意赞赏