🔒 IP地址的SSL证书
- 适用于任何IP的HTTPS: 通过Let's Encrypt为任何IP地址获取SSL证书
- 浏览器验证通过: 所有证书都经过官方验证,不会出现浏览器错误
- 无需配置: 无需配置DNS或SSL服务器
- 自动更新: 证书会自动更新
🔧 它是如何工作的
直接为IP地址获取SSL证书是不可能的:认证机构(包括Let's Encrypt)不会为裸IP颁发证书。DNSBox解决了这个问题——您可以在几秒钟内获得任何公共IP的免费SSL证书,无需设置域名或自己的DNS。
我们会自动替换DNS并执行ACME验证,通过123.123.123.123.dnsbox.io
的子域名颁发Let's Encrypt证书。支持IPv4和IPv6。一切都可以立即使用——只需通过DNSBox访问您所需的IP的HTTPS。
DNSBox自动将IP地址映射到域名。只需在子域名中编码IP:
- IPv4:
1.2.3.4.dnsbox.io
→1.2.3.4
- IPv6:
2a01-4f8-c17-b8f--1.dnsbox.io
→2a01:4f8:c17:b8f::1
- HTTPS: 通过Let's Encrypt获取有效的SSL证书
- WebSocket: 完全支持(保持Upgrade头部)
🎯 使用场景
DNSBox 是一个通用工具,允许通过 DNS 和 HTTPS 快速访问 IP 地址,无需复杂的配置:
- Web 开发与测试: 为本地和远程服务器创建临时域名。非常适合向客户展示项目并进行测试,无需更改 DNS 记录。
- 物联网 (IoT): 通过永久域名为动态网络中的 IoT 设备提供稳定的访问。简化设备的管理和监控。
- 临时服务器: 即时为展示和临时项目获取域名。无需浪费时间购买和配置独立的域名。
- 企业使用: 部署自己的 DNSBox 节点,完全控制 DNS 和 SSL 证书。确保数据的安全性和隐私性。
🌍 为什么选择 DNSBox 获取 IP 地址的 SSL 证书?
- ✨ 无需拥有或配置域名
- ✨ 提供无域名的 Let's Encrypt SSL 证书
- ✨ 支持任何 IP 地址(IPv4 和 IPv6),无需静态地址
- ✨ 自动配置 DNS 和 HTTPS
- ✨ 快速、可靠、公开并适用于生产环境
- ✨ 适用于 API、CI/CD、DevOps、临时服务器和 VPN
❓ 常见问题
- DNSBox 是做什么的? DNSBox 允许您为任何 IP 地址获得免费的 SSL 证书 — 即使您没有域名。您只需使用类似 123.123.123.123.dnsbox.io 的子域名,我们会自动颁发并维护证书。
- 如何使用 DNSBox? 只需将您的 IP 替换为 URL 中的
IP.dnsbox.io
。例如: https://167.172.5.205.dnsbox.io 我们会自动设置 DNS 和证书 — 您无需做任何事。 - 可以使用 DNSBox 获取没有域名的 IP 地址的 HTTPS 吗? 是的。这正是 DNSBox 的主要功能 — 您可以为 IP 地址获取 SSL 证书,而无需拥有域名。只需使用您的 IP 作为子域名,我们会通过 Let's Encrypt 自动进行 ACME 验证。
- 这安全吗? 是的。我们使用 Let's Encrypt 并通过 HTTPS 加密连接。您也可以自行验证收到的证书。
- 这是免费的? 是的,适用于公共使用 — 代码是开源的。
- DNSBox 支持哪些 IP 地址? 支持任何公共的 IPv4 和 IPv6 地址。
- 如果我使用动态 IP,怎么办? 您可以使用 DNSBox,但证书只对您指定的 IP 地址有效。对于动态 IP 地址,我们建议使用 DDNS 服务。
- 证书的有效期是多久? Let's Encrypt 的证书有效期为 90 天,我们会自动更新。
- 我可以在生产环境中使用 DNSBox 吗? 是的,DNSBox 适用于生产环境:CI/CD、公共 API、单页网站、IoT 设备 — 所有需要通过 IP 进行 HTTPS 访问的场景。
- 需要注册吗? 不需要。所有功能无需帐户。
- 如果我的服务器没有响应或关闭了,会怎么样? 如果无法通过 *.dnsbox.io 中指定的 IP 地址建立连接,浏览器将显示标准错误。DNSBox 会继续维护证书,一旦服务器恢复可用,证书会重新生效。
- 如何进行 IP 验证以发放证书? 我们通过子域名进行 DNS 验证。DNSBox 系统管理 dnsbox.io 的 DNS 区域,因此可以快速设置必要的 TXT 记录供 Let's Encrypt 使用。
- 可以使用 DNSBox 处理内部或私有 IP 地址(例如 192.168.0.1)吗? 不可以。该服务仅支持公共 IP 地址,且必须可通过互联网访问。
- 代码在哪儿? 查看 GitHub 上的代码
🧪 想要自行部署吗?
DNSBox 允许您在无需购买域名或设置 DNS 的情况下,直接为 IP 地址获得 SSL 证书 — 您只需使用 IP.dnsbox.io
这样的子域名,一切将“开箱即用”。
但是,如果您想要完全独立的实例,管理自己的 DNS 记录和证书,那么您需要手动配置基础设施:
自定义部署所需的条件:
1. ✅ 购买域名(例如 example.com
)。
2. 🖥 租用至少两台服务器,并且它们需要有公共的 静态 IP 地址,这些服务器将作为 NS 服务器使用。
3. 🛠 在注册商处创建 NS 记录,将这些 IP 地址指向这些服务器。例如:
ns1.example.com → 167.172.5.205
ns2.example.com → 134.199.248.116
4. 🚀 在每台服务器上安装 DNSBox,并提供正确的参数:
bash <(curl -sSL https://install.dnsbox.io) \
--ip=167.172.5.205 \
--domain=example.com \
--ns=ns1
参数说明:
--ip
— 当前服务器的公共 IP 地址(与 NS 记录中的相同)。--domain
— 根域名,例如 example.com
。--ns
— 当前 NS 服务器的名称(如 ns1
、ns2
等)。
附加选项:
--force-resolv
— 禁用 systemd-resolved(如果端口 53 被占用)。--debug
— 启用详细日志记录 (DNSBOX_DEBUG=true
)。
📌 配置完成后,您的 DNSBox 将:
- 作为权威 NS 服务器,
- 处理 DNS 请求,
- 通过 Let's Encrypt 自动获取 IP 地址的 SSL 证书,
- 无需依赖
dnsbox.io
子域名即可提供 HTTPS 和 WSS 访问。
💡 该解决方案非常适合您,如果您:
- 希望完全控制基础设施,
- 在裸 IP 上部署 API、开发服务或 VPN,
- 创建需要无域名 HTTPS 的独立项目。
🔗 查看源代码和文档:
github.com/crypto-chiefs/dnsbox
✅ 如何检查一切是否正常工作
设置 DNSBox 后,重要的是确保您的 IP 地址的 SSL 证书 已成功颁发并通过 HTTPS 可访问。以下是两种场景的说明:使用子域名 IP.dnsbox.io
和独立部署。
1. 如果您使用 IP.dnsbox.io
DNSBox 自动为您的 IP 设置 DNS 和 HTTPS 代理,因此一切无需额外配置即可工作。
检查 DNS 记录:
dig +short 167.172.5.205.dnsbox.io
预期的响应是 DNSBox 的其中一个 NS 服务器的 IP(例如,如果在安装时指定了 167.172.5.205
)。
检查浏览器中的 HTTPS:
https://167.172.5.205.dnsbox.io
🔒 浏览器应显示 安全连接,并且 Let's Encrypt 的证书有效。
2. 如果您独立部署了 DNSBox
在这种情况下,您管理自己的基础设施:域名、NS 记录和 DNSBox 服务器。请检查一切是否正常工作:
检查域名的 NS 记录:
dig NS example.com
确保返回 ns1.example.com.
、ns2.example.com.
等记录。
检查 NS 服务器的 IP 地址:
dig A ns1.example.com
dig A ns2.example.com
响应应包含您的 VPS 服务器的实际 IP。
通过特定 NS 服务器检查区域:
dig @167.172.5.205 A example.com
确保域名解析到预期的 IP 地址。
📌 如果出现错误,请确保 DNS 正常工作,NS 记录正确,且 DNSBox 在所有 NS 服务器上运行。
⚙️ 技术细节
基础实现
- 用 Go 编写,HTTP/DNS 层没有第三方依赖
- 使用 miekg/dns 构建自有的 DNS 服务器
- 内置 DNS(UDP + TCP 端口 53)、HTTPS(:443)和 REST API(:80)
- 一个二进制文件和 systemd 单元 — 适用于服务器、VPS 和边缘节点
DNS 和路由
从域名中解析 IP:
1.2.3.4.dnsbox.io
→1.2.3.4
2a01-4f8-c17-b8f--1.dnsbox.io
→2a01:4f8:c17:b8f::1
(где -- → ::, - → :)
支持的 DNS 请求类型:
- A, AAAA: 从域名获取 IP 地址
- TXT: 存储和复制 ACME 挑战
- NS, SOA, SRV: 动态生成(包括对等发现)
- CNAME, MX, TXT: 可以通过 custom_domains.txt 手动指定
自定义 DNS 模块
- 允许通过 custom_domains.txt 添加自定义 A、CNAME、MX、TXT、AAAA 记录
- 文件嵌入为 embed.FS,无需外部配置管理
- 与基于 IP 的生成并行工作
TLS 和 HTTPS
- 通过 dns-01 自动颁发 Let's Encrypt 证书
- TXT 记录本地存储,并通过 REST API 在节点间同步
- 节点间证书加密:临时 ECDH(X25519)+ AES-GCM
- 证书保存在 /var/lib/dnsbox/certs 并在每个请求时自动验证
WebSocket
- 支持 Connection: Upgrade + Upgrade: websocket
- 与任何 wss:// 客户端兼容,包括浏览器和 CLI 工具
安全性与限制
- 通过 blacklist.txt 阻止 IP(支持 IPv4、IPv6 和 CIDR)
- 对于被阻止的地址,不返回 HTTPS 和 DNS 响应
- 所有对等通信都使用临时密钥和加密传输
部署与配置
-
通过环境变量进行管理:
- DNSBOX_DOMAIN
- DNSBOX_IP
- DNSBOX_NS_NAME
- DNSBOX_DEBUG
- 通过 curl | bash 一键安装,安装 systemd 单元
- 支持 --force-resolv 标志,用于禁用 systemd-resolved
- 支持 --debug 标志,启用所有日志
如何为 IP 地址获取 SSL 证书
普通的证书颁发机构(CA)不能直接为 IP 地址颁发证书。DNSBox 是一个独特的服务,可以通过动态 DNS 替代来解决这个限制。使用格式为 IP.dnsbox.io
的子域名,我们将通过 Let's Encrypt 执行验证并颁发有效的 HTTPS 证书。
这是一个理想的解决方案,如果您需要 IP 服务器的 SSL,无域名的 API HTTPS,或者您正在处理 物联网(IoT)、测试环境、隧道 等无法注册域名的场景。