檔案系統金鑰儲存庫
使用此頁面設定一個將檔案系統用作永久金鑰儲存庫的 KES 伺服器。
純檔案系統不為儲存的金鑰提供任何保護。
僅在測試目的下使用此頁面的步驟。
tls
組態區段。KES 伺服器設定
-
產生 KES 伺服器私密金鑰和憑證
為 KES 伺服器產生 TLS 私密金鑰和憑證。
KES 伺服器預設是安全的,而且只能在 TLS 的情況下執行。在本指南中,我們為了簡化起見,使用自我簽署憑證。
以下指令會產生一個新的 TLS 私鑰 (
private.key
) 和一個針對 IP 位址127.0.0.1
及 DNS 名稱localhost
發行的自我簽署 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= }