Loading... # 一、背景 现在的网站一般少不了SSL证书的部署,而数千元的商业证书对于一般业务来说还是贵了一些。免费的证书方案主要是有两个,一个是云厂商给用户分配的一定额度的证书申请,还有一种是免费SSL厂商提供的acme协议申请证书。 经过近两年的SSL证书申请经验,总结了一个方法。该方法采用Google提供的acme接口,加上云厂商提供的AK SK域名权限,实现_acme-challenge的DNS验证方式,借助1panel/btpanel提供的申请界面,实现方便的证书申请以及日后维护。 采用Google大厂提供的acme接口优势在于,根证书稳定,兼容性良好。申请后,可以一定程度避免老旧设备因为CA证书缺失导致的https访问验证失败。 # 二、使用DNS验证的方法 ## 2.1 获取Google acme接口权限 * 打开cloud shell https://console.cloud.google.com/?cloudshell=true&hl=zh-cn&pli=1 * 等待分配机器 ![2024-05-06T07:56:44.png][1] * 开启Public CA API ``` gcloud services enable publicca.googleapis.com ``` ![2024-05-06T07:57:08.png][2] * 请求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][3] * 配置dns服务器接口 把aliyun AK SK等信息分别填入。 ![2024-05-06T08:38:51.png][4] * 使用DNS验证方式申请证书 <div class="hideContent">该部分仅登录用户可见</div> # 三、使用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申请证书的优势是验证快速下证快速,但是无法申请泛域名。 [1]: https://www.sddts.cn/usr/uploads/2024/05/1520619779.png [2]: https://www.sddts.cn/usr/uploads/2024/05/3668898878.png [3]: https://www.sddts.cn/usr/uploads/2024/05/1314965324.png [4]: https://www.sddts.cn/usr/uploads/2024/05/4291142681.png [5]: https://www.sddts.cn/usr/uploads/2024/05/3183106250.png 最后修改:2024 年 05 月 11 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏