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,私钥不会离开你的服务器。
简体中文