acme 签发证书
操作过程如下:(以下操作过程建议在root下执行)
一、下载脚本并执行安装
1、更新及安装组件
Debian/Ubuntu命令:
1 | apt update -y |
CentOS 命令:
1 | yum update -y |
2、安装 Acme 脚本
1 | curl https://get.acme.sh | sh -s [email protected] |
添加软链接:
1 | ln -s /root/.acme.sh/acme.sh /usr/local/bin/acme.sh |
二、申请证书:
1、80 端口空闲的证书申请方式:
自行更换代码中的域名、邮箱为你解析的域名及邮箱
1 | acme.sh --issue -d mydomain.com --standalone |
可选项:
1 | --server letsencrypt 指定CA机构 |
2、nginx服务器验证:
1 | acme.sh --issue -d mydomain.com --nginx |
3、DNS API申请方式:
接着去dnspod申请API并保存
登录dnspod后台,进入菜单–【用户中心】–【安全设置】,点击右侧的”创建API Token”,这里名称随意命名即可。
注意提示信息:仅仅在创建的时候显示一次,所以,如果怕忘记或者在执行本篇文章介绍的过程中出错,建议把ID和token记录下来,比如记事本之类。
正式进入申请证书的整个流程的准备环节,在shell环境下分别输入:
DNSPOD示例
1 | export DP_Id="dnspod中的id值" |
cloudflare示例
1 | export CF_Key="cloudflare 中查看你的 key" |
开始申请签发证书
1 | acme.sh --issue --dns dns_dp -d mydomain.com --debug |
-d 指代域名,可以有多个 -d 参数,所以,后面又跟了一个通配符域名,以上域名请换成你所需要的。整个命令执行需要一段时间,最后会有一个120秒的等待。等最后出现success字样,就表示签发成功了。签发成功之后会在/root/.acme.sh/生成一个目录,这个目录的名称就是你申请的域名:
如果默认CA无法颁发,则可以切换下列CA:
1 | 切换 Let’s Encrypt: |
既然已经签发成功了,之前去改nginx配置即可,引用这个目录下的文件就好了。打住!官网有一段说明很重要(https://github.com/Neilpang/acme.sh/wiki/说明)
注意, 默认生成的证书都放在安装目录下: ~/.acme.sh/, 请不要直接使用此目录下的文件, 例如: 不要直接让 nginx/apache 的配置文件使用这下面的文件. 这里面的文件都是内部使用, 而且目录结构可能会变化. 正确的使用方法是使用 –installcert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置,
这就牵出了后面的证书安装过程(其实是复制证书文件到其他地方,通过它给的installcert命令可以保证可以自动更新升级,如果是我们手动cp,则无法后续的续订证书)
三、安装证书(复制证书)
1、安装证书到/etc/letsencrypt/acme/
1 | acme.sh --installcert -d mydomain.com -d *.mydomain.com |
以上命令是把对应域名的证书文件都丢到/etc/letsencrypt/acme/里面去了,并且让nginx重新加载配置。
2、安装证书到指定文件夹
自行更换代码中的域名为你解析的域名
1 | acme.sh --installcert -d mydomain.com --ecc --key-file /root/private.key --fullchain-file /root/cert.crt --reloadcmd "service nginx force-reload" |
四、最后一个步骤是配置nginx
需要注意的是有这几个配置,除了密钥,其他引入的都是fullchain:
1 | ssl_trusted_certificate /etc/letsencrypt/acme/fullchain.cer; |
然后如果使用了pagespeed,则这两个很重要:
1 | pagespeed SslCertDirectory /etc/letsencrypt/acme; |
至此,整个安装配置过程都完成了,然后就可以撒手不管它自动续期(60天周期)
关于其他内容:
- 证书会60天周期自动更新续订
- acme.sh本身也要更新的,可以手动 ./acme.sh –upgrade 到最新版,也可以自动升级 ./acme.sh –upgrade –auto-upgrade,以及关闭 ./acme.sh –upgrade –auto-upgrade 0
- 详情请见官网 https://github.com/Neilpang/acme.sh
自签证书:
1 | #生成私钥: |