使用nginx,nginx安装参考:https://www.yuque.com/tianyunperfect/ygzsw4/qd2y59

基础

安装

  1. # 要使用root用户
  2. sudo su root
  3. # 一键安装
  4. curl https://get.acme.sh | sh
  5. # 使用
  6. acme.sh

证书操作

  • 生成证书

参考下面。

  • 查看证书

    1. acme.sh --list
  • 卸载证书

    1. acme.sh --remove -d tianyunperfect.cn

支持命令

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

手动设置DNS实例

普通域名生成

  1. # 生成证书
  2. ./acme.sh --issue -d cnhzz.com --nginx
  3. # 创建配置文件夹
  4. mkdir /etc/nginx/conf.d/ssl
  5. # 复制并自动更新
  6. ./acme.sh --installcert \
  7. -d cnhzz.com \
  8. --key-file /etc/nginx/conf.d/ssl/cnhzz.com.key \
  9. --fullchain-file /etc/nginx/conf.d/ssl/cnhzz.com.cer \
  10. --reloadcmd "service nginx force-reload"
  11. # 设置软件的自动更新
  12. ./acme.sh --upgrade --auto-upgrade
  13. # 删除域名
  14. acme.sh --remove -d example.com

通用域名生成

  1. 1、生成校验
  2. acme.sh --issue -d tianyunperfect.cn -d *.tianyunperfect.cn --dns \
  3. --yes-I-know-dns-manual-mode-enough-go-ahead-please
  4. 2、根据提示,添加dns
  5. 3、校验
  6. acme.sh --renew -d tianyunperfect.cn -d *.tianyunperfect.cn --dns \
  7. --yes-I-know-dns-manual-mode-enough-go-ahead-please

阿里云DNS示例

不同dns厂商参考:https://github.com/acmesh-official/acme.sh/wiki/dnsapi

1、获取一个 AliyunDNSFullAccess 的key和secret。

2、配置acem.sh

  1. cd ~/.acme.sh
  2. vi account.conf
  3. export Ali_Key="xxx"
  4. export Ali_Secret="xxx"

3、自动生成证书

  1. acme.sh --issue --dns dns_ali -d tianyunperfect.cn -d '*.tianyunperfect.cn'

其他用法

单域名

acme.sh —issue —dns dns_ali -d example.com -d www.example.com

多域名,一般不用

acme.sh —issue —dns dns_ali -d aaa.com -d .aaa.com -d bbb.com -d .bbb.com -d ccc.com -d *.ccc.com

返回结果:

  1. Your cert key is in /root/.acme.sh/tianyunperfect.cn/tianyunperfect.cn.key # 私钥
  2. full chain certs is there: /root/.acme.sh/tianyunperfect.cn/fullchain.cer # 完整证书

4、自动复制域名到指定目录

  1. acme.sh --installcert -d tianyunperfect.cn \
  2. --key-file /usr/local/nginx/conf/ssl/tianyunperfect.cn.key \
  3. --fullchain-file /usr/local/nginx/conf/ssl/tianyunperfect.cn.cer \
  4. --reloadcmd "nginx -s reload"

域名证书查看

https://myssl.com/cert_decode.html

输入cer里面的内容即可。

image.png

参考


这短短的一生我们最终都会失去,不放大胆一点,爱一个人、攀一座山、追一个梦!