本文档介绍如何为 Injective 节点配置和使用 keyring 及其各种 backend。在设置 keyring 之前,应先安装
injectived。更多信息请参阅安装 injectived 页面。keyring 可用的 backend
os backend
os backend 依赖操作系统特定的默认设置来安全处理密钥存储。通常,操作系统的凭证子系统根据用户的密码策略处理密码提示、私钥存储和用户会话。以下是最流行的操作系统及其各自的密码管理器列表:
- macOS(自 Mac OS 8.6 起):Keychain
- Windows:Credentials Management API
- GNU/Linux:
libsecret 的便捷前端,后者是 kwallet 客户端。
os 是默认选项,因为操作系统的默认凭证管理器旨在满足用户最常见的需求,并在不影响安全性的情况下提供舒适的体验。
对于无头环境,推荐使用 file 和 pass backend。
file backend
file backend 将 keyring 加密存储在应用程序的配置目录中。每次访问此 keyring 时都会请求密码,这可能在单个命令中多次发生,导致重复的密码提示。如果使用 bash 脚本执行使用 file 选项的命令,你可能需要使用以下格式处理多次提示:
首次向空 keyring 添加密钥时,系统会提示你输入两次密码。
pass backend
pass backend 使用 pass 工具来管理密钥敏感数据和元数据的磁盘加密。密钥存储在应用程序特定目录中的 gpg 加密文件中。pass 适用于大多数流行的 UNIX 操作系统以及 GNU/Linux 发行版。有关如何下载和安装的信息,请参阅其手册页。
pass 使用 GnuPG 进行加密。gpg 在执行时会自动调用 gpg-agent 守护进程,该进程处理 GnuPG 凭证的缓存。有关如何配置缓存参数(如凭证 TTL 和密码过期)的更多信息,请参阅 gpg-agent 手册页。<GPG_KEY_ID> 替换为你的 GPG 密钥 ID。你可以使用个人 GPG 密钥或专门用于加密密码存储的其他密钥。
kwallet backend
kwallet backend 使用 KDE Wallet Manager,它默认安装在以 KDE 为默认桌面环境的 GNU/Linux 发行版上。更多信息请参阅 KWallet Handbook。
test backend
test backend 是 file backend 的无密码变体。密钥以未加密的形式存储在磁盘上。
仅供测试目的使用。不建议在生产环境中使用 test backend。
memory backend
memory backend 将密钥存储在内存中。程序退出后密钥会立即删除。
仅供测试目的使用。不建议在生产环境中使用 memory backend。
向 keyring 添加密钥
你可以使用injectived keys 获取 keys 命令的帮助,使用 injectived keys [command] --help 获取特定子命令的更多信息。
你还可以使用
injectived completion 命令启用自动补全。例如,在 bash 会话开始时运行 . <(injectived completion),所有 injectived 子命令都将自动补全。<key_name> 参数运行 add 子命令。在本教程中,我们将仅使用 test backend,并将新密钥命名为 my_validator。此密钥将在下一节中使用。
eth_secp256k1 密钥对。keyring 还支持 ed25519 密钥,可以通过传递 --algo ed25519 标志来创建。keyring 当然可以同时持有两种类型的密钥。