685 字
3 分钟
Let’s Encrypt 申请 IP 证书

前言#

最近把一台阿里云的服务器从默认的宝塔 Linux 面板重置为了 Ubuntu 系统,需要重新安装一些应用。原先在这台服务器搭建的 OpenList 是使用宝塔面板申请的 IP 证书,现在没有宝塔了就想研究并记录一下如何通过别的方式申请 IP 证书。

Let’s Encrypt 从 2025 年开始支持申请 IP 证书,一开始想的是通过 Certbot 直接申请 IP 证书,但是没想到这个官方推荐的工具还不支持:Requested name 1.2.3.4 is an IP address. The Let's Encrypt certificate authority will not issue certificates for a bare IP address.

查阅资料后发现 acme.sh 已经支持申请 IP 证书了,开始折腾!

在开始之前,请确保你已经:

  • VPS 开放了 80 端口。
  • VPS 安装了 Nginx。

安装 acme.sh#

安装命令为:

Terminal window
curl https://get.acme.sh | sh -s email=my@example.com
NOTE

email 需要改成你自己的邮箱,用于向 CA 注册使用。

安装完成后会自动将 acme.sh 添加为一个 alias,无需指定完整路径运行,只需要重新登录 ssh 即可。

配置 acme.sh 使用 Let’s Encrypt#

因为 acme.sh 收了 ZeroSSL 的钱,因此现在默认使用的是 ZeroSSL。如果要使用 Let’s Encrypt 需要进行配置:

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

申请 IP 证书#

使用以下命令申请证书:

Terminal window
acme.sh --issue -d <IP 地址> -w <网站根目录> --certificate-profile shortlived --days 84
NOTE

网站根目录 为你当前 80 端口部署的服务的根目录。如果你的 Nginx 是作为反向代理使用的,没有实际的网页文件,请务必在 Nginx 的 80 端口配置中加入以下代码,否则 CA 无法读取到验证文件。

location ~ ^/.well-known/(acme-challenge|pki-validation)/ {
add_header Content-Type text/plain;
root /var/www/html;;
}

签发之后 acme.sh 会自动添加一个 cronjob,无需手动配置自动续签。 生成的证书默认存储在 /root/.acme.sh/1.2.3.4_ecc/ 目录:

  • fullchain.cer:完整证书链
  • 1.2.3.4.key:私钥文件

部署证书#

在证书签发下来后,直接在 Nginx 里引用 root 目录的证书文件可能会有权限隐患,因此需要把证书部署到一个专门的生产路径。 创建存放证书的目录:

Terminal window
sudo mkdir -p /etc/nginx/ssl/1.2.3.4

使用以下命令将证书部署到该生产路径:

Terminal window
acme.sh --install-cert -d 1.2.3.4 --ecc \
--key-file /etc/nginx/ssl/1.2.3.4/key.pem \
--fullchain-file /etc/nginx/ssl/1.2.3.4/cert.pem \
--reloadcmd "systemctl force-reload nginx"
NOTE

后续每次续签完成后,acme 会自动把证书更新到生产路径,并重启 Nginx。

配置证书#

在 Nginx 中配置证书:

server_name 1.2.3.4; # 改为你的 IP
ssl_certificate /etc/nginx/ssl/1.2.3.4/cert.pem;
ssl_certificate_key /etc/nginx/ssl/1.2.3.4/key.pem;

检查配置文件并重启 Nginx。打开我的 Openlist,可以看到证书已经配置好了: lets-encrypt-ip-certificates

参考来源#

  1. Let’s Encrypt 签发 IP 证书
  2. Let’s Encrypt 公网 IP 证书签发实操指南
Let’s Encrypt 申请 IP 证书
https://www.smaritron.top/posts/lets-encrypt-ip-certificates/
作者
Smaritron
发布于
2026-05-09
许可协议
CC BY-NC-SA 4.0