acme.sh的介绍和安装,附插件列表和中文文档

     0评论

acme.sh是一个流行的Let's Encrypt免费证书客户端,其协议支持完整,且支持众多DNS服务商的API部署,本文介绍软件的安装、并提供插件列表和翻译的命令帮助。

介绍

  • 完全用Shell(Unix shell)语言编写的ACME协议客户端。
  • 完整地实现ACME协议。
  • 支持ACME v1和ACME v2
  • 支持ACME v2通配符证书
  • 简单,功能强大且易于使用。你只需要3分钟就可以学习它。
  • 兼容Bash,dash和sh。
  • 最简单的shell脚本实现的Let’s Encrypt免费证书客户端。
  • 完全用Shell编写,不依赖于python或官方的Let’s Encrypt客户端。
  • 只需一个脚本即可自动颁发,续订和安装证书。
  • 不需要root/sudoer访问权限。
  • 对Docker友好
  • IPv6支持
  • Cron作业通知续订或错误等

它可能是“最简单,最智能”的shell脚本,可以自动发布和续订Let’s Encrypt的免费证书。

安装

只需运行sudo curl https://get.acme.sh | sh,下面是安装的过程:

[email protected]:~$ sudo curl https://get.acme.sh | sh [sudo] password for qiushan: # 下载了get.acme.sh % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 705 0 705 0 0 393 0 --:--:-- 0:00:01 --:--:-- 393 # 下载了acme.sh % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 183k 100 183k 0 0 2346 0 0:01:20 0:01:20 --:--:-- 3610 # 开始运行acme.sh [Wed May 22 11:37:37 CST 2019] Installing from online archive. # 从github下载整个软件包,其中包含了deploy、dnsapi、notify三类shell脚本 [Wed May 22 11:37:37 CST 2019] Downloading https://github.com/Neilpang/acme.sh/archive/master.tar.gz [Wed May 22 11:37:39 CST 2019] Extracting master.tar.gz # 推荐适用于standalone模式的依赖:socat,如果使用webroot、dns-01等模式,这个可以忽略 [Wed May 22 11:37:39 CST 2019] It is recommended to install socat first. [Wed May 22 11:37:39 CST 2019] We use socat for standalone server if you use standalone mode. [Wed May 22 11:37:39 CST 2019] If you don't use standalone mode, just ignore this warning. # 将脚本安装到用户目录 [Wed May 22 11:37:39 CST 2019] Installing to /home/qiushan/.acme.sh [Wed May 22 11:37:39 CST 2019] Installed to /home/qiushan/.acme.sh/acme.sh # 添加alias命令 [Wed May 22 11:37:39 CST 2019] Installing alias to '/home/qiushan/.bashrc' [Wed May 22 11:37:39 CST 2019] OK, Close and reopen your terminal to start using acme.sh # 添加cron任务 [Wed May 22 11:37:39 CST 2019] Installing cron job 49 0 * * * "/home/qiushan/.acme.sh"/acme.sh --cron --home "/home/qiushan/.acme.sh" > /dev/null # 完成 [Wed May 22 11:37:39 CST 2019] Good, bash is found, so change the shebang to use bash as preferred. [Wed May 22 11:37:39 CST 2019] OK [Wed May 22 11:37:39 CST 2019] Install success!

至此就可以运行acme.sh了。acme.sh最强大的地方是它支持非常多的dns服务商的api,因为作者是中国人,所以对国内dns服务商的支持比较好,其中也有很多其它用户贡献的插件。下面是acme.sh支持的dnsapi和deploy插件列表。

插件

dnsapi

dns_acmedns.sh dns_acmeproxy.sh dns_active24.sh dns_ad.sh dns_ali.sh # 阿里云 dns_autodns.sh dns_aws.sh # 亚马逊 AWS dns_azure.sh # 微软 AZURE dns_cf.sh # CloudFlare dns_cloudns.sh dns_cn.sh dns_conoha.sh dns_cx.sh dns_cyon.sh dns_da.sh dns_ddnss.sh dns_desec.sh dns_dgon.sh # digital ocean dns_dnsimple.sh dns_do.sh dns_doapi.sh dns_dp.sh # 腾讯云/DNSPOD dns_dpi.sh # 腾讯云/DNSPOD dns_dreamhost.sh dns_duckdns.sh dns_dyn.sh dns_dynu.sh dns_euserv.sh dns_exoscale.sh dns_freedns.sh dns_gandi_livedns.sh dns_gcloud.sh dns_gd.sh dns_gdnsdk.sh dns_he.sh dns_hostingde.sh dns_infoblox.sh dns_internetbs.sh dns_inwx.sh dns_ispconfig.sh dns_kinghost.sh dns_knot.sh dns_lexicon.sh dns_linode.sh dns_linode_v4.sh dns_loopia.sh dns_lua.sh dns_me.sh dns_myapi.sh dns_mydevil.sh dns_mydnsjp.sh dns_namecheap.sh dns_namecom.sh dns_namesilo.sh # 域名服务商namesilo dns_nederhost.sh dns_neodigit.sh dns_netcup.sh dns_nsd.sh dns_nsone.sh dns_nsupdate.sh dns_nw.sh dns_one.sh dns_online.sh dns_openprovider.sh dns_ovh.sh dns_pdns.sh dns_pointhq.sh dns_rackspace.sh dns_schlundtech.sh dns_selectel.sh dns_servercow.sh dns_tele3.sh dns_ultra.sh dns_unoeuro.sh dns_vscale.sh dns_yandex.sh # 俄罗斯yandex dns_zilore.sh dns_zone.sh dns_zonomi.sh

WebServer、云服务的证书安装/部署插件

根据自己的需要查看脚本,设定环境变量使用。

apache.sh # 这是一个将证书部署到apache服务器的脚本。 cpanel_uapi.sh # 这是一个使用cpanel API将证书部署到cpanel的脚本。 dovecot.sh # 这是一个将cert部署到dovecot服务器的脚本。 exim4.sh # 这是一个将cert部署到exim4服务器的脚本。 fritzbox.sh # 这是一个将证书部署到AVM FRITZ!Box路由器的脚本。 gcore_cdn.sh # 这是一个使用G-Core Labs API(https://docs.gcorelabs.com/cdn/)将证书部署到G-Core CDN服务(https://gcorelabs.com/ru/)的脚本。 gitlab.sh # 将证书部署到Gitlab托管页面的脚本 haproxy.sh # 将证书部署到haproxy的acme.sh脚本 keychain.sh kong.sh mailcow.sh # 这是一个将cert部署到mailcow的脚本。 myapi.sh mydevil.sh mysqld.sh # 这是一个将cert部署到mysqld服务器的脚本。 nginx.sh # 这是一个将cert部署到nginx服务器的脚本。 opensshd.sh # 这是一个将cert部署到opensshd服务器的脚本。 pureftpd.sh # 这是一个将cert部署到pureftpd服务器的脚本。 qiniu.sh # 用于为七牛云(qiniu.com)创建证书的脚本 routeros.sh # 这是一个将cert部署到routeros路由器的脚本。 ssh.sh # 通过SSH将证书部署到远程服务器的脚本 strongswan.sh unifi.sh # 这是一个将cert部署到unifi服务器的脚本。 vault_cli.sh # 这是一个将cert部署到hashicorp库的脚本 vsftpd.sh # 这是一个将cert部署到vsftpd服务器的脚本。

中文帮助

acme.sh支持的命令比较多,下面是命令帮助的中文版。

[email protected]:~$ acme.sh https://github.com/Neilpang/acme.sh v2.8.2 Usage: acme.sh command ...[parameters].... Commands: --help, -h 显示此帮助消息。 --version, -v 显示版本信息。 --install 将acme.sh安装到您的系统。 --uninstall 卸载acme.sh,然后卸载cron作业。 --upgrade 将acme.sh升级到https://github.com/Neilpang/acme.sh中的最新代码。 --issue 颁发证书。 --signcsr 从现有的csr发出证书。 --deploy 将证书部署到您的服务器。 --install-cert 将颁发的证书安装到apache/nginx或任何其他服务器。 --renew, -r 续订证书。 --renew-all 续订所有证书。 --revoke 撤销证书。 --remove 从acme.sh已知的证书列表中删除证书。 --list 列出所有证书。 --showcsr 显示csr的内容。 --install-cronjob 安装cron作业以续订证书,您不需要调用它。'install'命令可以自动安装cron作业。 --uninstall-cronjob 卸载cron作业。'uninstall'命令可以自动执行此操作。 --cron 运行cron job以续订所有证书。 --toPkcs 将证书和密钥导出到pfx文件。 --toPkcs8 转换为pkcs8格式。 --update-account 更新帐户信息。 --register-account 注册帐户密钥。 --deactivate-account 停用该帐户。 --create-account-key 创建帐户私钥,供专业使用。 --create-domain-key 创建域私钥,供专业使用。 --createCSR, -ccsr 创建CSR,供专业使用。 --deactivate 停用域名authz,供专业使用。 --set-notify 设置cron通知挂钩,级别或模式。 Parameters: --domain, -d domain.tld 指定用于发布,续订或撤销等的域。 --challenge-alias domain.tld DNS别名模式的挑战域别名:https://github.com/Neilpang/acme.sh/wiki/DNS-alias-mode --domain-alias domain.tld DNS别名模式的域别名:https://github.com/Neilpang/acme.sh/wiki/DNS-alias-mode --force, -f 用于强制安装或强制立即续订证书。 --staging, --test 使用登台服务器,仅用于测试。 --debug 输出调试信息。 --output-insecure 输出所有敏感消息。默认情况下,所有凭据/敏感消息都在输出/调试/日志中隐藏以确保安全。 --webroot, -w /path/to/webroot 指定Web根模式的Web根文件夹。 --standalone 使用独立模式。 --alpn 使用独立的alpn模式。 --stateless 使用无状态模式,请参阅:https://github.com/Neilpang/acme.sh/wiki/Stateless-Mode --apache 使用apache模式。 --dns [dns_cf|dns_dp|dns_cx|/path/to/api/file] 使用dns模式或dns api。 --dnssleep [120] 等待所有txt记录在dns api模式下生效的时间(以秒为单位)。默认120秒。 --keylength, -k [2048] 指定域密钥长度:2048,3072,4096,8192或ec-256,ec-384。 --accountkeylength, -ak [2048] 指定帐户密钥长度。 --log [/path/to/logfile] 指定日志文件。如果您未在此处提供文件路径,则默认为:"/home/qiushan/.acme.sh/acme.sh.log"。 --log-level 1|2 指定日志级别,默认为1。 --syslog [0|3|6|7] Syslog级别,0:禁用syslog,3:错误,6:info,7:debug。 这些参数用于在颁发/续订证书后将证书安装到nginx/apache或任何其他服务器: --cert-file 发布/续订后,证书将被复制到此路径。 --key-file 发出/续订后,密钥将被复制到此路径。 --ca-file 发布/续订后,中间证书将被复制到此路径。 --fullchain-file 发布/续订后,fullchain证书将被复制到此路径。 --reloadcmd "service nginx reload" 发布/续订后,它用于重新加载服务器。 --server SERVER ACME目录资源URI。(默认:https://acme-v01.api.letsencrypt.org/directory) --accountconf 指定自定义帐户配置文件。 --home 指定acme.sh的主目录。 --cert-home 指定保存所有证书的主目录,仅对"--install"命令有效。 --config-home 指定保存所有配置的主目录。 --useragent 指定用户代理字符串。它将被保存以备将来使用。 --accountemail 指定帐户电子邮件,仅对"--install"和"--update-account"命令有效。 --accountkey 指定帐户密钥路径,仅对"--install"命令有效。 --days 指定使用'--issue'命令时续订证书的天数。默认值为60天。 --httpport 指定独立侦听端口。仅在服务器位于反向代理或负载平衡器后面时才有效。 --tlsport 指定独立的tls侦听端口。仅在服务器位于反向代理或负载平衡器后面时才有效。 --local-address 如果您有多个IP地址,则指定独立/tls服务器侦听地址。 --listraw 仅用于'--list'命令,以原始格式列出证书。 --stopRenewOnError, -se 仅对'--renew-all'命令有效。如果一个证书在续订时出错,请停止。 --insecure 不检查服务器证书,在某些设备中,api服务器的证书可能不受信任。 --ca-bundle 指定CA证书包的路径以验证api服务器的证书。 --ca-path 指定包含PEM格式的CA证书的目录,由wget或curl使用。 --nocron 仅对'--install'命令有效,这意味着:不要安装默认的cron作业。在这种情况下,证书不会自动续订。 --noprofile 仅对'--install'命令有效,这意味着:不要将别名安装到用户配置文件。 --no-color 不要输出彩色文字。 --force-color 强制输出彩色文字。用于与HTML电子邮件的aha工具进行非交互式使用。 --ecc 指定使用ECC证书。适用于'--install-cert',' - renew','--revoke',' - toPkcs'和'--createCSR' --csr 指定输入csr。 --pre-hook 在获取任何证书之前要运行的命令。 --post-hook 尝试获取/续订证书后要运行的命令。无论获得/更新是成功还是失败。 --renew-hook 每个成功续订的证书都要运行一次的命令。 --deploy-hook 用于部署证书的挂钩文件 --ocsp-must-staple, --ocsp 生成ocsp必须Staple扩展。 --always-force-new-domain-key 续订时生成新的域密钥。否则,默认情况下不会更改域密钥。 --auto-upgrade [0|1] 适用于'--upgrade'命令,指示将来是否自动升级。 --listen-v4 强制standalone/tls服务器监听ipv4。 --listen-v6 强制standalone/tls服务器监听ipv6。 --openssl-bin 指定自定义openssl bin位置。 --use-wget 强制使用wget,如果你同时安装了curl和wget。 --yes-I-know-dns-manual-mode-enough-go-ahead-please 强制使用dns手动模式:https://github.com/Neilpang/acme.sh/wiki/dns-manual-mode --branch, -b 仅对'--upgrade'命令有效,指定要升级到的分支名称。 --notify-level 0|1|2|3 设置通知级别:默认值为2。 0:禁用,不会发送通知。 1:仅在出现错误时发送通知。没有消息就是好消息。 2:成功续订证书时发送通知,或者出现错误 3:跳过,续订或错误证书时发送通知 --notify-mode 0|1 设置通知模式。默认值为0。 0:批量模式。在一条消息中发送所有域的通知(邮件) 1:证书模式。为每个证书发送一条消息。 --notify-hook [hookname] 设置通知挂钩

-- EOF --

本文最后修改于2年前 (2019-05-22)

差评不太行一般挺好非常不错 (No Ratings Yet)
读取中...
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址