之前本站一直用的是 AlphaSSL 野卡通配符证书,价格30元一年,免费通配符证书可以选择 Let's Encrypt,不过证书有效期只有90天,过期后就需要重新签发。虽然可以通过 acme.sh 脚本来实现自动续期,但是如果使用了 CDN 的话,CDN 上的证书还是只能通过手动更新。

近期 ACME 支持了有效期半年的免费通配符SSL证书,而且还支持签发免费 IPv4 & IPv6 证书,嗨CA项目官网:https://www1.hi.cn/,注意不支持 .ru.by.su 俄罗斯域名,话不多说直接看教程。

签发教程

注意免费证书有所限制,当需要以下特性的时候:超过1个通配符、超过3条多域名、IP 证书、通配符追加多域名、RSA 4096 密钥、ECC 密钥,会自动触发收费流程。如果只是签发 RSA 2048 密钥单域名通配符证书,目前为止仍然是免费的。

  1. 首先 SSH 连接服务器,安装 acme.sh
    # 注意修改邮箱地址
    curl  https://get.acme.sh | sh -s email=my@example.com
    
    # 设置 acme.sh 自动升级
    cd ~/.acme.sh/
    acme.sh --upgrade --auto-upgrade
    
  2. IP 证书

    需要确保 80 端口可以正常访问,否则无法签发,由于 acme.sh 默认60天会自动续签证书,而 IPv4 证书的有效期是180天,所以这里还需要使用 --days 参数自定义续签时间。

    acme.sh --issue -d [你的IP] --webroot [你的网站目录] --server https://acme.hi.cn/directory --days 150
    
    # 例:
    ## IPv4
    acme.sh --issue -d 1.2.3.4 --webroot /home/wwwroot/ --server https://acme.hi.cn/directory --days 150
    
    ## IPv6(CA 限制,有效期90天)
    acme.sh --issue -d 240e:3a0:20f:2d97:274:79c7:9b53:4789 --webroot /home/wwwroot/ --server https://acme.hi.cn/directory
    
  3. 通配符证书

    需要先确认你的 DNS 服务商,这里以 DNSPod.cn 为例,首先获取你的 API Key 和 ID,登录 DNSPod 控制台 选择 DNSPod Token 申请即可,然后将你的 DNSPod API Key 和 ID 用下方命令设置成临时变量:

    export DP_Id="1234"
    export DP_Key="sADDsdasdgdsf"
    

    好了现在就可以申请你的证书了,用 acme.sh 的 DNS API 模式申请证书会自动给你的域名添加一条 txt 记录用于认证,申请完后可以自行删除,将下方命令中的 example.com 改成你要申请的域名即可。

    acme.sh --issue -d \*.example.com -d example.com --dns dns_dp --server https://acme.hi.cn/directory --days 150 -k 2048
    

    稍等片刻你的证书就签发成功了,证书文件保存在 ~/.acme.sh/ 目录下以你域名或 IP 命名的子目录,如果你是其他的 DNS 服务商,参考:How to use DNS API

  4. 部署

    宝塔面板(Nginx)部署只需要复制 [你的IP/域名].key 的内容到面板的 密钥(KEY) 文本框中,然后复制 [你的IP/域名]/fullchain.cer证书(PEM格式) 文本框中,保存即可使用。

补充说明

acme.sh 的高级功能较多,具体使用可用查阅官方Wiki参数说明

  1. 卸载脚本
    # 使用下方的命令即可卸载,然后手动删除 ~/.acme.sh/ 目录和 crontab 的定时任务即可
    acme.sh --uninstall
    
  2. 删除证书
    # 查看证书列表
    acme.sh list
    # 吊销证书,删除证书并不会吊销证书
    acme.sh revoke <SAN_Domains>
    # 删除证书,执行完毕后根据提示手动移除证书目录即可
    acme.sh remove <SAN_Domains>
    
  3. 强制续签

    默认自动续签时间是2个月,到期后会自动续签,在命令后加上 --force 参数,可以强制续签

    acme.sh --issue -d \*.example.com -d example.com --dns dns_dp --server https://acme.hi.cn/directory -k 2048 --force
    

Never give up your dreams.