IP SSL 证书
一行命令为服务器 IP 申请免费、受信任的 Let's Encrypt HTTPS 证书,无需域名,自动安装、自动续期。
在服务器上以 root 运行
bash <(curl -sL ipk.me/ssl) -l zh-CN 216.73.217.175 -l zh-CN | 报告语言(跟随本页) |
-4 / -6 | 只测 IPv4 或 IPv6 |
-w /var/www/html | 通过网站根目录验证,不临时占用 80 端口 |
-r "systemctl reload nginx" | 每次续期后执行的命令(默认:重载正在运行的 nginx / Apache / Caddy) |
-d /etc/ssl/ipk | 证书文件的安装目录 |
-y | 停止占用 80 端口的 Web 服务前不询问 |
--alpn | 用 443 端口验证(TLS-ALPN-01),不用 80 端口 |
--staging | 使用 Let's Encrypt 测试环境(证书不受信任,用于试用) |
203.0.113.10 2001:db8::10 | 要申请的 IP。不写时用服务器出口 IPv4 / IPv6;服务器有更多公网 IP 时会让你选择 |
原理
- 内置精简 ACME 客户端(只需 bash、openssl、curl,临时验证服务器用 python3),按 Let's Encrypt 短期证书配置申请:IP 证书有效期约 6 天,每 3 天自动续期。
- 通过 80 端口验证(HTTP-01),IP 的 80 端口必须能从公网访问;签发前 ipk.me 会从外部检测。
- 80 端口被封?443 端口也可以(TLS-ALPN-01):加 --alpn;只有 443 可达时也会自动改用。IP 证书不能用 DNS 验证。
- 签发后输出证书和私钥路径、有效期;脚本副本保存在 /etc/ssl/ipk,并在 crontab 加一个每天执行的续期任务。
- 如果 nginx、Apache 或 Caddy 占用了 80 / 443 端口,签发和续期时会停止它几秒钟;用 -w 可以避免。
- IPv4 和 IPv6 签在同一张证书里。内网和 CGNAT 地址无法申请。中国大陆的云服务器未备案时 80 端口常被运营商封锁。
- 适用于 Linux。只有 IP 地址会发送给 ipk.me,私钥不会离开你的服务器。