如何申请免费的域名证书

如何申请免费的域名证书

目标

申请免费的域名证书,用于网络 HTTPS 服务。

软件

使用开源软件【 An ACME Shell script: acme.sh

  • Github 地址: https://github.com/acmesh-official/acme.sh.git

  • Gitee 地址: https://gitee.com/neilpang/acme.sh.git

使用方法

第一步:准备阿里云访问凭证

需要在阿里云控制台获取一个具有 DNS 解析 (AliyunDNS) 管理权限的 Access Key ID 和 Access Key Secret。因为ACME在申请证书过程中会通过该密钥去调用DNS服务接口,完成域名合法性的验证。实现步骤:

  1. 登录阿里云控制台,进入 RAM 访问控制 或 AccessKey 管理 页面。
  2. 创建一个新的 Access Key(如果还没有)。
  3. 确保该关联的用户/角色具有管理 云解析 DNS 的权限。
  4. 记下您的 Access Key ID 和 Access Key Secret。

第二步:安装 acme.sh

在您的 Ubuntu 服务器上执行以下命令安装 acme.sh:

1. 从自动化脚本安装
# 1. 安装 git 和 curl(如果尚未安装)
sudo apt update
sudo apt install -y curl git

# 2. 下载并安装 acme.sh
curl https://get.acme.sh | sh -s email=your@example.com
2. 手动安装(推荐)
git clone https://gitee.com/neilpang/acme.sh.git
cd acme.sh
./acme.sh --install -m my@example.com
3. 注意:
  • 安装脚本会将 acme.sh 放置在 $HOME/.acme.sh/ 目录下,并设置一个 cron job 用于自动续期。
  • 运行自动化时发现脚本要去Github上下载代码,但阿里云服务器不能访问Github,所以用的方法2从Gitee上手动克隆的代码安装。

第三步:设置阿里云 API 环境变量

acme.sh 签发证书时会读取环境变量来获取阿里云凭证。您需要将第一步获取的 Access Key ID 和 Secret 导出到当前 Shell 会话中。

export Ali_Key="<AccessKey ID>"
export Ali_Secret="<AccessKey Secret>"
  • 重要提示: acme.sh 会自动将AccessKey ID 和 AccessKey Secret 保存到一个配置文件中(在 $HOME/.acme.sh/account.conf),供后续续期使用。

第四步:签发证书(DNS 模式)

证书申请时需要对域名合法性进行验证,有两种方式:

  • 一种是通过 HTTP 网站验证。需要在公网上有合法域名指向的Web服务。
  • 一种是 DNS 解析验证。比较方便是在阿里云上购买了 DNS 服务。
  • 下面的例子是通过阿里云的DNS服务来进行申请。
签发通配符证书

如果您想签发一个通配符证书(例如 *.yourdomain.com),可以一次性将主域名和通配符域名都加上:

./acme.sh --issue \
-d yourdomain.cn \
-d '*.yourdomain.cn' \
--dns dns_ali \
--server zerossl \
--force

注意:

  • 之前早的参数是 ali_args, 导致执行时默认使用的 HTTP 方式进行的验证,结果报错。注意新版的参数是 dns_ali
  • 如果之前申请证书失败,可以删除 $HOME/.acme.sh/yourdomain.cn 目录,然后再申请。

第五步:安装/部署证书

证书签发成功后,它会存储在 $HOME/.acme.sh/yourdomain.com/ 目录下(或 yourdomain.com_ecc/)。请勿直接引用此目录下的文件。

您需要使用 --install-cert 命令将证书复制到 Web 服务器(如 Nginx 或 Apache)可以读取的安全路径,并设置重载命令。

Nginx 部署示例:
# 示例更新命令
acme.sh --install-cert \
-d yourdomain.com \
--key-file       /etc/nginx/ssl/yourdomain.com.key \
--fullchain-file /etc/nginx/ssl/fyourdomain.com.cer \
--reloadcmd      "sudo systemctl reload nginx"
  • 执行时,acme.sh 不能使用sudo用户来执行安装。我先放开了nginx/ssl/ 目录的权限,执行完后再修改回去的。
  • 执行此命令后,acme.sh 会将部署信息记录下来,以后证书自动续期时(由 cron job 触发),也会自动执行这个 reloadcmd 来更新您的 Web 服务器配置。
  • 完成部署后,请记得修改您的 Nginx/Apache 配置文件 ,指向新的 .key 和 .cer 文件路径,然后手动重载服务一次(如果 --install-cert 没有执行 reloadcmd)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值