📒
notebook
  • Notebook
  • DevOps
    • Git
      • 常见 Git 操作
      • 使用 SSH 连接 Git 远程仓库
      • 使用 GPG Keys 签名 Git 提交
      • Git on macOS
    • Docker
      • macOS 安装配置 Docker
      • CentOS7 安装配置 Docker CE
  • Linux
    • CentOS
      • CentOS7 安装配置 vsftpd
      • CentOS7 设置虚拟内存
      • CentOS7 使用 acme.sh 自动申请免费 SSL 证书
      • CentOS7 修改 SSH 端口号
      • CentOS7 主机初始设置
      • 阿里云 CentOS 主机常见设置
      • CentOS7 安装配置 SS
    • nginx
      • nginx 配置 301 永久重定向
      • nginx 使用 SSL证书配置 HTTPS
      • CentOS7 安装配置 nginx
      • nginx 配置 gzip 压缩
      • nginx 代理静态网页
  • Server
    • Ghost
      • macOS 安装配置 Ghost
      • CentOS7 安装配置 Ghost
    • npm & Yarn
      • Yarn 常用命令
      • CentOS7 安装卸载升级 Yarn
      • npm & Yarn 常见错误处理
      • macOS 安装卸载升级 Yarn
    • Node.js
      • Awesome Node.js
      • CentOS7 安装卸载升级 Node.js
      • macOS 安装卸载升级 Node.js
  • Web
    • Ionic
      • 创建 Ionic & Angular 项目
      • 使用 Ionic & Cordova 构建 Android 应用
      • macOS 搭建 Ionic & Cordova 开发环境
    • CSS
      • CSS 排版技巧
      • Awesome CSS
      • CSS 三栏自适应布局
    • Angular
      • Awesome Angular
      • 创建 Angular 项目
    • HTML
      • HTML head 常用标签
      • HTML 常用 DTD 声明
      • 常用网页语义结构
    • Web 技术标准
    • JavaScript
      • Awesome JavaScript
      • JavaScript 的 eval() 函数详解
  • Mobile
    • H5
      • iOS Safari Web App 配置
  • Development Environment
    • Development Utilities
      • Awesome Windows
      • macOS 安装配置 Homebrew
      • Awesome macOS
      • macOS 安装配置 iTerm2
    • FEED
      • 常用 Gulp 插件
  • Network
    • 常见公共 DNS
  • Technology Stacks for Web Front-End Development
Powered by GitBook
On this page
  • 安装 acme.sh
  • 配置命令权限
  • 配置 acme.sh
  • 申请证书
  • 保存证书
  • 命令测试
  • 管理 acme.sh
  • 卸载 acme.sh
  • 升级 acme.sh
  • 参考文献

Was this helpful?

  1. Linux
  2. CentOS

CentOS7 使用 acme.sh 自动申请免费 SSL 证书

PreviousCentOS7 设置虚拟内存NextCentOS7 修改 SSH 端口号

Last updated 4 years ago

Was this helpful?

安装 acme.sh

下载并执行安装脚本:

curl https://get.acme.sh | sh

刷新 Bash 配置:

source ~/.bashrc

重新登录 SSH,查看已安装的 acme.sh 的版本号:

acme.sh -v

v2.8.4

配置命令权限

证书更新后,需要以 root 用户身份强制重启 nginx。如果当前登陆用户无 sudo 命令权限,或者执行 sudo 命令需要密码,需要给当前登陆用户添加免密码执行强制重启 nginx 命令的 sudo 权限。

编辑 sudo 权限配置文件:

sudo visudo

在文件底部插入:

<user>    ALL=(ALL)    NOPASSWD: /usr/bin/systemctl --force restart nginx

Tips: <user> 为当前登录的系统用户名,acme.sh 将以该用户身份运行。

配置 acme.sh

申请证书

申请证书需要验证域名所有权,可通过 DNS 设置,在域名上添加一条 TXT 解析记录来验证域名所有权,需要使用 Automatic DNS API 来完成证书的自动申请。

如阿里云:

# 阿里云子用户的 API Key ID 和 API Key Secret
export Ali_Key="ZbRj8467md0lKyUGfWP"
export Ali_Secret="fWPb9yUGgd4LkKRHWKglMZ7md0j846"

# 多个域名添加多个 "-d <doman>",支持泛域名
acme.sh --issue --dns dns_ali -d avincheng.com -d *.avincheng.com

如 CloudFlare:

# CloudFlare 的 API Token 和 Account ID
export CF_Token="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Account_ID="dgggfaf7499750f063rfdsfb905b34rf"

# 多个域名添加多个 "-d <doman>",支持泛域名
acme.sh --issue --dns dns_cf -d avincheng.com -d *.avincheng.com

Tips: CloudFlare 命令中的 CF_Account_ID 可在登陆 CloudFlare 后,在顶部导航中点击域名名称,在 Overview 页面右边栏底部 Account ID 获取。

中间会倒计时等待两分钟等待解析生效,生成的证书会以第一个域名来命名。

保存证书

在当前用户目录下创建保存证书的目录:

mkdir -p ~/certs/avincheng.com

保存证书并强制重启 nginx:

acme.sh --install-cert -d avincheng.com \
        --fullchain-file ~/certs/avincheng.com/fullchain.cer \
        --key-file ~/certs/avincheng.com/avincheng.com.key \
        --ca-file ~/certs/avincheng.com/ca.cer \
        --reloadcmd "sudo systemctl --force restart nginx"

Let’s Encrypt 证书有效期为 90 天,目前在 60 天后,acme.sh 会自动执行以上命令重新申请证书,并强制重启 nginx。

命令测试

测试自动更新证书命令是否可以成功执行(不会更新证书):

acme.sh --renew-all --force

管理 acme.sh

卸载 acme.sh

acme.sh --uninstall

升级 acme.sh

# 手动升级 acme.sh
acme.sh --upgrade

# 开启 acme.sh 自动升级
acme.sh --upgrade --auto-upgrade

# 关闭 acme.sh 自动升级
acme.sh --upgrade --auto-upgrade 0

参考文献

前往 找到自己的 DNS 服务商对应的操作和命令。

Tips: 阿里云推荐使用 “”,然后只给予子用户 “AliyunDNSFullAccess“ 权限。

https://github.com/Neilpang/acme.sh
How to use DNS API
子用户AccessKey
说明 - Neilpang/acme.sh WiKi