2020年7月

参考:https://iclart.com/archives/391

安装
Pre-1.前言
ACME.sh是一个基于ACME协议的证书小工具,可以很方便的获取、续费基于ACME协议CA的证书

Part-1. ACME.sh的安装
ACME.sh的安装非常简单,仅需一个命令就可以搞定,该命令可以更新acme.sh
curl https://get.acme.sh | sh

由于部分过于纯净的系统没有cron,在安装ACME之前应该先运行此命令
sudo yum install cron* -y

会安装在 ~/.acme.sh/ 目录下,以后生成的证书也会在这里面,按照域名为文件夹安置。

理论上会自动添加一个 acme.sh 别名,但有时候并不会生成,需要手动执行以下命令:

source ~/.bashrc

使用dns api的模式进行证书申请

在阿里云获取AccessKey ID和AccessKey Secret
https://usercenter.console.aliyun.com/#/manage/ak
查看一下

export Ali_Key="key值"
export Ali_Secret="key Secret"

首次签发证书,下次就不用再次执行这个命令了

acme.sh --issue --dns dns_ali -d dgq.msdgq.com --force

安装证书:
运行如下命令即可自动安装(此命令会被ACME记录下来,当证书续期/更新时会自动执行)

acme.sh --install-cert -d dgq.msdgq.com \
--cert-file /etc/pki/tls/certs/dgq.msdgq.com.key \
--key-file /etc/pki/tls/private/dgq.msdgq.com.pem \
--fullchain-file /etc/pki/tls/certs/dgq.msdgq.com.cer \
--reloadcmd "systemctl reload httpd"

自动更新证书
Let's 的证书有效期为90天

acme升级
目前由于 acme 协议和 Let`s CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步.

升级 acme.sh 到最新版 :

acme.sh --upgrade
如果你不想手动升级, 可以开启自动升级:

acme.sh --upgrade --auto-upgrade
之后, acme.sh 就会自动保持更新了.

你也可以随时关闭自动更新:

acme.sh --upgrade --auto-upgrade 0

Part-9. ACME.sh支持的其他命令/参数
ACME.sh命令构成
acme.sh [命令] [参数]

ACME.sh命令(只说常用的)
--uninstall
卸载ACME.sh

--upgrade
升级ACME.sh

--issue
签发新的证书

--install-cert
讲过了,参照上文

--renew, -r -d 域名
讲过了,参照上文

--renew-all
续期全部证书

--revoke
吊销证书

--remove
从ACME.sh中删除一张证书(记得先吊销)

--list
列出ACME.sh中的所有证书

--toPkcs
转换到pckcs12格式(pfx/p12),可以用于IIS

ACME.sh参数
--keylength, -k
指定密钥的长度,例如-k 2048,如需签发ECC算法密钥的证书,使用-k ec-256或-k ec-384即可

--ocsp-must-staple, --ocsp
签发带有OCSP Must Staple拓展的证书,先挖坑,过后再填

--server
指定ACME服务器,默认为Let's Encrypt,如果需要签发其他CA的证书(比如Buypass),可使用此参数指定,for example
acme.sh --issue -d example.com -d www.example.com --webroot /path/to/your/webroot --server https://api.buypass.com/acme/directory

每月自动更新证书
vi /etc/crontab
00 7 1 "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

免费SSL证书Let's Encrypt(certbot)安装使用教程

安装方法:
如果是CentOS 6、7,先执行:yum install epel-release

cd /root/
wget https://dl.eff.org/certbot-auto --no-check-certificate
chmod +x ./certbot-auto
./certbot-auto -n
./certbot-auto -n只是用来安装依赖包的,也可以跳过直接到下面的生成证书的步骤,国内VPS或服务器上使用的话建议先修改为国内的pip源。

修改pip源为国内的:
mkdir ~/.pip
cat > ~/.pip/pip.conf <<EOF
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=https://pypi.tuna.tsinghua.edu.cn
EOF

单域名生成证书:
./certbot-auto certonly --email youemail@vpser.net --agree-tos --no-eff-email --webroot -w /home/wwwroot/www.vpser.net -d www.vpser.net

多域名单目录生成单证书:(即一个网站多个域名使用同一个证书)

./certbot-auto certonly --email youemail@vpser.net --agree-tos --no-eff-email --webroot -w /home/wwwroot/www.vpser.net -d www.vpser.net -d bbs.vpser.net

多域名多目录生成一个证书:(即一次生成多个域名的一个证书)
/certbot-auto certonly --email youemail@vpser.net --agree-tos --no-eff-email --webroot -w /home/wwwroot/www.vpser.net -d www.vpser.net -d bbs.vpser.net -w /home/wwwroot/lnmp.org -d www.lnmp.org -d lnmp.org
就是生成成功。

生成的证书会存在:/etc/letsencrypt/live/www.vpser.net/ 目录下

证书续期
cerrbot的续期比原来的更加简单,因为证书只有90天,所以建议使用crontab进行自动续期:

crontab 里加上如下规则:0 3 /5 * /root/certbot-auto renew --disable-hook-validation --renew-hook "/etc/init.d/nginx reload" 这样每5天就会执行一次所有域名的续期操作。当然时间也可以自行进行调整,建议别太频繁,因为他们都有请求次数的限制,如果需要强制更新可以在前面命令上加上 --force-renew 参数。