使用nginx,nginx安装参考:https://www.yuque.com/tianyunperfect/ygzsw4/qd2y59
基础
安装
# 要使用root用户
sudo su root
# 一键安装
curl https://get.acme.sh | sh
# 使用
acme.sh
证书操作
- 生成证书
参考下面。
查看证书
acme.sh --list
卸载证书
acme.sh --remove -d tianyunperfect.cn
支持命令
qiushan@topvps:~$ 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] 设置通知挂钩
手动设置DNS实例
普通域名生成
# 生成证书
./acme.sh --issue -d cnhzz.com --nginx
# 创建配置文件夹
mkdir /etc/nginx/conf.d/ssl
# 复制并自动更新
./acme.sh --installcert \
-d cnhzz.com \
--key-file /etc/nginx/conf.d/ssl/cnhzz.com.key \
--fullchain-file /etc/nginx/conf.d/ssl/cnhzz.com.cer \
--reloadcmd "service nginx force-reload"
# 设置软件的自动更新
./acme.sh --upgrade --auto-upgrade
# 删除域名
acme.sh --remove -d example.com
通用域名生成
1、生成校验
acme.sh --issue -d tianyunperfect.cn -d *.tianyunperfect.cn --dns \
--yes-I-know-dns-manual-mode-enough-go-ahead-please
2、根据提示,添加dns
3、校验
acme.sh --renew -d tianyunperfect.cn -d *.tianyunperfect.cn --dns \
--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
cd ~/.acme.sh
vi account.conf
export Ali_Key="xxx"
export Ali_Secret="xxx"
3、自动生成证书
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
返回结果:
Your cert key is in /root/.acme.sh/tianyunperfect.cn/tianyunperfect.cn.key # 私钥
full chain certs is there: /root/.acme.sh/tianyunperfect.cn/fullchain.cer # 完整证书
4、自动复制域名到指定目录
acme.sh --installcert -d tianyunperfect.cn \
--key-file /usr/local/nginx/conf/ssl/tianyunperfect.cn.key \
--fullchain-file /usr/local/nginx/conf/ssl/tianyunperfect.cn.cer \
--reloadcmd "nginx -s reload"
域名证书查看
https://myssl.com/cert_decode.html
输入cer里面的内容即可。
参考
这短短的一生我们最终都会失去,不放大胆一点,爱一个人、攀一座山、追一个梦!