notes 笔记notes 笔记
Home
Article
Category
Tag
Timeline
Home
Article
Category
Tag
Timeline
  • build

    • 环境变量
  • browse

    • 2fa
    • sse
    • token
  • database

    • mongodb

      • start
    • mysql

      • curd
      • 安装
      • join
      • 多对多
      • 性能优化
      • 表设计
      • 常见问题
  • docker

    • github-actions

      • local
      • prod
    • docker-compose
    • index
    • podman
  • file

    • 文件下载
    • 原生 node.js下载文件
  • git

    • index
    • multiple-github-accounts
    • auto-commit
    • pat
    • rebase
  • linux

    • grep
    • index
    • ssh
    • vim
    • windows
  • network

    • best-proxy-way
    • git-via-https
    • github-push-fail
  • nginx

    • acme.sh
    • cache
    • https
    • index
    • safe
  • node

    • fnm
    • tool
  • obsidian

    • ish
    • start
  • react

    • index
    • set-state
  • summary

    • index
  • vue

    • index
    • typescript
  • libs
  • open-source
  • 1:安装
  • 2:注册 acme.sh 账户
  • 3:切换 CA 服务器为 Let's Encrypt
  • 4:配置 Aliyun API 凭据
  • 5:生成证书
  • 6:安装证书到 Nginx
    • 1. 添加 SSL 配置
    • 2. 强制 HTTPS 重定向
  • 7:自动更新证书
  • 8:查看已安装证书信息
  • Reference

1:安装

# 在任意目录下 clone,例如在 /home 目录下
git clone https://github.com/acmesh-official/acme.sh.git
# 为acme.ch映射一个全局别名acme.sh,方便其他路径下执行该脚本
alias acme.sh=/home/acme.sh/acme.sh
# 验证
acme.sh --help

2:注册 acme.sh 账户

acme.sh --register-account -m your_email@example.com

请将 your_email@example.com 替换为您的实际电子邮件地址。

3:切换 CA 服务器为 Let's Encrypt

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

更改以后还是有概率出现 pending,但基本 2-3 次即可成功。

4:配置 Aliyun API 凭据

需要以下两个环境变量来与 Aliyun 交互:

  1. Ali_Key:Aliyun 的 AccessKey ID。
  2. Ali_Secret:Aliyun 的 AccessKey Secret。

您需要从 Aliyun 获取 Ali_Key 和 Ali_Secret,然后将其设置为环境变量或直接传递给 acme.sh。以下是设置方法:

export Ali_Key="your_aliyun_api_key"
export Ali_Secret="your_aliyun_api_secret"

5:生成证书

运行以下命令生成证书:

acme.sh --issue --dns dns_ali -d example.com -d "*.example.com" --debug

*.example.com 加上 "" 号避免某些命令行(mac下zsh)运行异常。

6:安装证书到 Nginx

证书生成后,您需要将其安装到 Nginx 的配置中。以下是修改 /Users/await/pros/app-deployment/nginx/nginx.prod.conf 的示例:

1. 添加 SSL 配置

在 server 块中添加以下内容:

server {
    listen 443 ssl;
    server_name example.com;

    # SSL 证书配置
    ssl_certificate /etc/nginx/ssl/example.com/fullchain.cer;
    ssl_certificate_key /etc/nginx/ssl/example.com/example.com.key;
    ssl_trusted_certificate /etc/nginx/ssl/example.com/ca.cer;

    # SSL 协议配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
    ssl_prefer_server_ciphers on;
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_stapling on;
    ssl_stapling_verify on;

    # 其他配置保持不变
    # ...
}

2. 强制 HTTPS 重定向

在 listen 80 的 server 块中添加以下内容:

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

7:自动更新证书

acme.sh 会自动为您设置定时任务来更新证书。您可以通过以下命令手动测试更新:

acme.sh --renew -d example.com -d "*.example.com" --debug

8:查看已安装证书信息

acme.sh --info -d example.com

Reference

  • acme.sh
  • dnsapi
  • docker 部署nginx+acme.sh 申请阿里云域名证书并且自动更新
最近更新:: 2025/10/19 23:44
Contributors: qyhever
Next
cache