该工具从 IANA 获取当前的 DNSSEC 根信任锚,对其进行加密验证,并将根 KSK(密钥签名密钥)输出为 DNSKEY 和 DS 记录。
它需要 Python 3.10+ 和 OpenSSL 命令行工具。没有其他依赖。
签名验证使用嵌入在工具本身的 CA 证书,因此无论 HTTPS 证书检查是否成功,信任锚都会经过加密验证。
从仓库安装:
pip install .
这会提供一个 get-trust-anchor 命令。
运行已安装的命令:
get-trust-anchor
或作为 Python 模块调用:
python -m get_trust_anchor
| 选项 | 描述 |
|---|---|
--local FILE | 使用本地信任锚 XML 文件,而不是从 IANA 获取 |
--local-sig FILE | 使用本地签名文件,而不是从 IANA 获取 |
--root-ca FILE | 使用自定义根 CA 证书,而不是内置证书 |
--no-validation | 跳过签名验证 |
--ksks-from-trust-anchor | 直接从信任锚 XML 中提取 KSK,而不是从 DNS 获取 |
--keep | 运行后保留临时文件(XML 和签名) |
--print-dnskey | 将 DNSKEY 记录打印到 stdout,而不是写入文件 |
--print-ds | 将 DS 记录打印到 stdout,而不是写入文件 |
--version | 打印工具版本并退出 |
默认情况下,该工具会将两个文件写入当前目录:
ksk-as-dnskey.txt -- 根 KSK 的 DNSKEY 记录ksk-as-ds.txt -- 根 KSK 的 DS 记录使用 --print-dnskey 或 --print-ds 可将记录打印到 stdout,适合管道操作:
get-trust-anchor --print-ds | grep "^. IN DS"
安装开发依赖:
pip install -e ".[dev]"
运行测试:
pytest
检查格式、lint 和类型:
ruff format --check .
ruff check .
ty check
要在 GitHub 上发布新版本,请更新 pyproject.toml 中的 version,提交后推送匹配的标签:
git tag v1.0.0
git push origin v1.0.0
推送 v* 标签会触发发布工作流,该工作流会构建 sdist/wheel 并发布附带这些文件的 GitHub Release。
BSD 2-Clause。详情请参阅 LICENSE。