Skip to content

Tags

在中国自动生成免费HTTPS证书的最佳方案

Certbot 自动生成 Lets encrypt 的方案已经被墙了,经过各种尝试之后,发现基于 amce.sh+cloudflare 的 dns 解析是最方便无痛的.

  1. 下载 acme 工具:

    # 用root用户权限,因为涉及到操作nginx
    sudo su
    wget -O - https://get.acme.sh | sh -s email=my@example.com
  2. 域名在 Cloudflare 解析

  3. 在某个域名的 dashboard 面板右侧找到 Account ID, 记录下备用。

  4. 进入https://dash.cloudflare.com/profile/api-tokens,生成一个 API Token,选择Edit Zone 模版,Zone Resources 选择 All Zones,生成,  把以下的信息保存到 ~/.bashrc

    export CF_Token="sdfsdfsdfljlbjkljlkjsdfoiwje"
    export CF_Account_ID="xxxxxxxxxxxxx"
    source ~/.bashrc

    如果有什么不清楚的,可以参考文档: https://github.com/acmesh-official/acme.sh/wiki/dnsapi

  5. 签发证书,运行 acme.sh --issue --dns dns_cf -d example.com --server letsencrypt

  6. 安装证书到指定目录:

acme.sh --install-cert -d example.com \
--key-file /etc/nginx/ssl/example.com.key \
--fullchain-file /etc/nginx/ssl/example.com.crt \
--reloadcmd "service nginx force-reload"

之后 acme 会自动添加 cron 任务,自动续期期限

  1. nginx 配置参考

可以在这里 在线生成一份合适的 ssl 配置

生成后,首次需要初始化 Diffie-Hellman keys:openssl dhparam -out /etc/nginx/dhparam.pem 2048

然后运行 sudo nginx -t && sudo systemctl reload nginx

Edit this page
Last updated on 11/20/2021