Fortanix SDKMS
本教程展示如何设置一个使用KES服务器Fortanix SDKMS作为持久且安全的密钥存储:
Fortanix SDKMS
-
创建应用程序
注册一个新的应用程序,该应用程序可以对 Fortanix SDKMS 实例进行身份验证和通信。
-
前往
AppsFortanix SDKMS UI 中的 section。
-
给应用程序起一个描述性的名称,例如
KES -
选择
REST API随着集成 -
选择
API Key作为身份验证方法
-
-
分配组
分配的组作为应用程序的默认组。 新创建的密钥将属于此组,除非您在 KES 配置文件中指定显式的组 ID。

-
创建应用程序并复制应用程序的API密钥。
此密钥是 KES 与 Fortanix SDKMS 通信时使用的访问凭证。

KES Server 设置
KES服务器需要一个TLS私钥和证书。
KES服务器是默认安全并且只能通过 TLS 运行。 本教程为简化起见使用自签名证书。
-
为 KES 服务器生成 TLS 私钥和证书
以下命令生成一个新的TLS私钥
server.key以及一个自签名的 X.509 证书server.cert这是为该IP地址签发的127.0.0.1和 DNS 名称localhost(作为 SAN)。 根据您的设置自定义命令。kes identity new --server --key server.key --cert server.cert --ip "127.0.0.1" --dns localhost任何其他用于 X.509 证书生成的工具也同样适用。 例如,您可以使用
openssl:openssl ecparam -genkey -name prime256v1 | openssl ec -out server.key openssl req -new -x509 -days 30 -key server.key -out server.cert \ -subj "/C=/ST=/L=/O=/CN=localhost" -addext "subjectAltName = IP:127.0.0.1" -
生成私钥和证书
kes identity new --key=app.key --cert=app.cert app你可以计算
app身份随时验证。kes identity of app.cert -
创建配置文件
创建配置文件命名
server-config.yml:address: 0.0.0.0:7373 admin: identity: disabled # We disable the admin identity since we don't need it in this guide tls: key : server.key cert: server.cert policy: my-app: allow: - /v1/key/create/my-app* - /v1/key/generate/my-app* - /v1/key/decrypt/my-app* identities: - ${APP_IDENTITY} keystore: fortanix: sdkms: endpoint: "<your-fortanix-sdkms-endpoint>" # Use your Fortanix instance endpoint. credentials: key: "<your-api-key>" # Insert the application's API key -
在新窗口/标签页中启动 KES 服务器:
export APP_IDENTITY=$(kes identity of app.cert) kes server --config=server-config.yml --auth=off该命令使用--auth=off因为我们的root.cert和app.cert证书是自签名的。 -
在另一个标签页中,连接到服务器
export KES_CLIENT_CERT=app.cert export KES_CLIENT_KEY=app.key kes key create -k my-app-key-k这是必需的,因为我们使用了自签名证书。 -
从先前创建的密钥派生并解密数据密钥
my-app-key:kes key derive -k my-app-key { plaintext : ... ciphertext: ... }kes key decrypt -k my-app-key <base64-ciphertext>
使用 KES 与 MinIO 服务器
MinIO Server 需要 KES 来启用服务器端数据加密。
查看MinIO KES 操作指南有关将新的 KES 服务器与 MinIO 服务器配合使用所需的额外步骤。
配置参考
以下部分介绍了使用 Fortanix SDKMS 作为根 KMS 存储外部密钥的密钥加密服务(KES)配置设置,例如用于 MinIO 服务器端加密的密钥。