动态IP使用acme.sh申请证书

2021年9月27日

使用DNS API来申请证书有个好处,很适合没有固定IP的情况.一般主要应用场景是家庭宽带提供公网服务,比如可以将自己的NAS,路由器,视频监控投放到公网上面.现在所有的服务基本都已经强制使用https,而申请一个互联网信任的证书,可以避免很多麻烦,也能保护网络数据的安全.

1. CloudFlare 使用方法

CloudFlare图名提供了两种方法

1.1 使用全局api key

首先你要登录你的账号去获取 API key.

  1. export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
  2. export CF_Email="[email protected]"

1.2 使用新的cloudflare api token

  1. export CF_Token="sdfsdfsdfljlbjkljlkjsdfoiwje"
  2. export CF_Account_ID="xxxxxxxxxxxxx"

如果使用新的token,可以使DNS区域(zone)可读可写.如果只需要覆盖一个区域(zone),可以限制某个Zone的DNS写访问,并指定CF_Zone_ID:

  1. export CF_Token="sdfsdfsdfljlbjkljlkjsdfoiwje"
  2. export CF_Account_ID="xxxxxxxxxxxxx"
  3. export CF_Zone_ID="xxxxxxxxxxxxx"

接下来用命令申请证书:

acme.sh --issue --dns dns_cf -d example.com -d www.example.com

CF_Key CF_Email  CF_Token CF_Account_ID将会保存在 in ~/.acme.sh/account.conf ,以后可以重复使用

2. 使用 Name.com API

登录自己name.com的账号,创建你的API,查阅: https://www.name.com/account/settings/api

注意: Namecom_Username 必须是你的用户名而非你的token名. 入如果你不小心已经用token名作为你的用户名运行了脚本,请在配置文件里 ~/.acme.sh/account.conf 去修改正确,很多人会在这一步出现错误.

  1. export Namecom_Username="testuser"
  2. export Namecom_Token="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

然后用接下来的命令获取证书:

acme.sh --issue --dns dns_namecom -d example.com -d www.example.com

请注意,你必须关闭两步验证的功能,否则API获取DNS会不成功.如果必须使用两步验证,请查阅这个链接: Using API with Two-step 

3. 使用 Namecheap API

需要使用的参数有namecheap的用户名, API KEY (https://www.namecheap.com/support/api/intro.aspx) 和你的认证白名单IP(或者一个连接去获取IP,链接需要认证).

  1. export NAMECHEAP_USERNAME="..."
  2. export NAMECHEAP_API_KEY="..."
  3. export NAMECHEAP_SOURCEIP="..."

NAMECHEAP_SOURCEIP 可以直接用IP或者一个链接去获取(e.g. https://ifconfig.co/ip).

以上三个参数会写进 ~/.acme.sh/account.conf ,能重复使用.

接下来获取证书.

acme.sh --issue --dns dns_namecheap -d example.com -d *.example.com

4. 使用DNSPod.cn 方法:

首先你需要登录官网获取 DNSPod API Key 和 ID.

  1. export DP_Id="1234"
  2. export DP_Key="sADDsdasdgdsf"

然后,开始用命令获取证书:

acme.sh --issue --dns dns_dp -d example.com -d www.example.com

DP_Id 和 DP_Key 会写入 ~/.acme.sh/account.conf 可以重复使用.

没有评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注