安装 acme.sh

  • 运行安装脚本(不要求 Root 环境)
wget -O -  https://get.acme.sh | sh

安装过程不会污染已有的系统任何功能和文件, 所有的修改都限制在安装目录中: ~/.acme.sh/

  • 然后重新载入一下 .bashrc
source ~/.bashrc
  • 开启acme.sh 的自动升级
acme.sh --upgrade --auto-upgrade

证书申请

1.修改默认 CA 证书供应商

acme.sh --set-default-ca --server letsencrypt

2.证书申请

如果80 端口未占用,那么2.1的方法最简单,只需一条命令。如果80端口已经被Nginx之类的使用了,可以先暂停Nginx,再用2.1的方法。我懂,你不想停止80端口的服务,那么提供2.2的方法,使用 DNS 来申请证书的方式,是个不错的方式,优雅的解决问题。

  • 2.1 80 端口未占用
acme.sh --issue -d www.yourdomain.com --standalone --keylength ec-256
  • 2.2 80 端口占用,使用 DNS 申请:

先编辑acme.sh的配置文件,添加API令牌

文件位置 ~/.acme.sh/account.conf 可以用Vim或者nano 打开编辑

# 不推荐使用全局 API 密钥(最小权限原则)
# 请参考官方教程新建一个cloudflare api 令牌:
nano ~/.acme.sh/account.conf
export CF_Token="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Account_ID="xxxxxxxxxxxxx"
export CF_Zone_ID="xxxxxxxxxxxxx"   //此项非必须

详见: acme.sh官方教程   整点猫咪教程

# 执行以下命令申请证书
acme.sh --issue --dns dns_cf -d www.yourdomain.com --keylength ec-256

--debug是可选参数,输出的信息更详细,申请失败加上,用来排查错误。

如下,申请成功:

ECC 证书的主要优势在于它的 Keysize 更小,意味着同等大小下安全性的提升和加密解密速度的加快。如 ECC-256bit 的强度大约相当于 RSA-3072bit 。

证书安装

使用acme.sh安装证书将创建一个cron作业,该作业将自动续订证书并将相关文件复制到您在安装命令中提供的位置。默认情况下,证书每80天续订一次

将~/docker/nginx/cert/改成你想要安装到的路径即可,建议证书以.crt 结尾,密钥以.key 结尾。

 acme.sh --install-cert -d www.yourdomain.com \
--fullchain-file ~/docker/nginx/cert/yourdomain.crt  \
--key-file  ~/docker/nginx/cert/yourdomain.key  --ecc

可以在安装命令后面继续追加--reloadcmd "systemctl restart nginx.server"等,即安装证书后重启Nginx或者别的啥服务都OK

为电报设置通知

一旦您同时拥有TG Bot API令牌和您希望机器人设置通知的聊天ID,

请在~/.acme.sh/account.conf 设置以下两个变量供通知钩子脚本使用:

export TELEGRAM_BOT_APITOKEN="..."   # Token returned by @BotFather during bot creation above.
export TELEGRAM_BOT_CHATID="..."     # Chat ID fetched above.

然后设置通知钩子:acme.sh --set-notify --notify-hook telegram

如下电报机器人通知设置成功:

默认acme.sh每天自动检测证书是否过期,过期会自动续约,并安装到上一次安装证书的位置。

没过期,Renew Skipped。过期,续约通知 Success!!!

详见:acme.sh wiki notify

其它

想到再写吧!!

  • acme.sh --set-notify --notify-level 3 --notify-mode 1TG Bot通知频率设置设置为高,每天通知。默认续约成功才通知,现在是每天检测证书是否过期也会发通知,没过期会跳过续约。

  • 新的VPS到手请先安装点常用软件先apt install --no-install-recommends -y sudo net-tools vnstat nano python3-pip git wget curl neofetch unzip ufw tree fonts-powerline socket socat

  • 申请证书不只这两种方式,但是这两种非常的简单,不是吗?