文件系统密钥库
使用此页面设置使用文件系统作为持久密钥库的 KES 服务器。
普通文件系统不提供对存储密钥的任何保护。
仅将此页面上的步骤用于测试目的。
tls
配置部分。KES 服务器设置
-
生成 KES 服务器私钥和证书
为 KES 服务器生成 TLS 私钥和证书。
KES 服务器是 默认安全的,并且只能在 TLS 启用时运行。在本指南中,我们出于简便起见使用自签名证书。
以下命令会为 IP
127.0.0.1
和 DNS 名称localhost
生成一个新的 TLS 私钥 (private.key
) 和一个自签名的 X.509 证书 (public.crt
)$ kes identity new --ip "127.0.0.1" localhost Private key: private.key Certificate: public.crt Identity: 2e897f99a779cf5dd147e58de0fe55a494f546f4dcae8bc9e5426d2b5cd35680
-
生成客户端凭据
客户端应用程序需要凭据才能访问 KES 服务器。以下命令会生成一对新的 TLS 私钥/公钥。
$ kes identity new --key=client.key --cert=client.crt MyApp Private key: client.key Certificate: client.crt Identity: 02ef5321ca409dbc7b10e7e8ee44d1c3b91e4bf6e2198befdebee6312745267b
身份
02ef5321ca409dbc7b10e7e8ee44d1c3b91e4bf6e2198befdebee6312745267b
是client.crt
中公钥的唯一指纹。您可以随时重新计算指纹。$ kes identity of client.crt Identity: 02ef5321ca409dbc7b10e7e8ee44d1c3b91e4bf6e2198befdebee6312745267b
-
配置 KES 服务器
创建 KES 服务器配置文件:
config.yml
。确保policy
部分中的身份与您的client.crt
身份匹配。address: 0.0.0.0:7373 # Listen on all network interfaces on port 7373 admin: identity: disabled # We disable the admin identity since we don't need it in this guide tls: key: private.key # The KES server TLS private key cert: public.crt # The KES server TLS certificate policy: my-app: allow: - /v1/key/create/my-key* - /v1/key/generate/my-key* - /v1/key/decrypt/my-key* identities: - 02ef5321ca409dbc7b10e7e8ee44d1c3b91e4bf6e2198befdebee6312745267b # Use the identity of your client.crt keystore: fs: path: ./keys # Choose a directory for the secret keys
-
启动 KES 服务器
kes server --config config.yml --auth off
Linux 交换空间保护在 Linux 环境中,KES 可以使用
mlock
系统调用来防止操作系统将内存中的数据写入磁盘(交换)。这可以防止敏感数据的泄露。使用以下命令允许 KES 使用
mlock
系统调用,而无需以root
权限运行。sudo setcap cap_ipc_lock=+ep $(readlink -f $(which kes))
启动具有内存保护的 KES 服务器实例。
kes server --config config.yml --auth off --mlock
KES CLI 访问
-
设置
KES_SERVER
端点此变量告诉 KES CLI 要访问哪个 KES 服务器。
export KES_SERVER=https://127.0.0.1:7373
-
使用客户端凭据
这些变量告诉 KES CLI 要使用哪些凭据来访问 KES 服务器。
export KES_CLIENT_CERT=client.crt
export KES_CLIENT_KEY=client.key
-
执行操作
根据分配的策略执行任何允许的 API 操作。
在本地运行 KES 用于测试目的时,使用-k
或--insecure
标志来生成新的密钥或数据加密密钥。例如,我们可以创建一个密钥。
kes key create my-key-1 -k
然后,我们可以使用该密钥生成一个新的数据加密密钥。
kes key dek my-key-1 -k { plaintext : UGgcVBgyQYwxKzve7UJNV5x8aTiPJFoR+s828reNjh0= ciphertext: eyJhZWFkIjoiQUVTLTI1Ni1HQ00tSE1BQy1TSEEtMjU2IiwiaWQiOiIxMTc1ZjJjNDMyMjNjNjNmNjY1MDk5ZDExNmU3Yzc4NCIsIml2IjoiVHBtbHpWTDh5a2t4VVREV1RSTU5Tdz09Iiwibm9uY2UiOiJkeGl0R3A3bFB6S21rTE5HIiwiYnl0ZXMiOiJaaWdobEZrTUFuVVBWSG0wZDhSYUNBY3pnRWRsQzJqWFhCK1YxaWl2MXdnYjhBRytuTWx0Y3BGK0RtV1VoNkZaIn0= }