檔案系統金鑰儲存庫

使用此頁面設定一個將檔案系統用作永久金鑰儲存庫的 KES 伺服器。

K E S C l i e n t K E S S e r v e r F i l e s y s t e m
僅供測試

純檔案系統不為儲存的金鑰提供任何保護。

僅在測試目的下使用此頁面的步驟。

現有的金鑰和憑證
如果您已經有 TLS 私密金鑰和憑證,例如來自 WebPKI 或內部憑證授權機構,您可以改用它們。請記住調整 tls 組態區段。

KES 伺服器設定

  1. 產生 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
    
  2. 產生用戶端憑證

    用戶端應用程式需要憑證才能存取 KES 伺服器。以下指令會產生一個新的 TLS 私鑰/公鑰對。

    $ kes identity new --key=client.key --cert=client.crt MyApp
    
      Private key:  client.key
      Certificate:  client.crt
      Identity:     02ef5321ca409dbc7b10e7e8ee44d1c3b91e4bf6e2198befdebee6312745267b
    

    識別碼 02ef5321ca409dbc7b10e7e8ee44d1c3b91e4bf6e2198befdebee6312745267bclient.crt 中公鑰的唯一指紋。您可以隨時重新計算指紋。

    $ kes identity of client.crt
    
      Identity:  02ef5321ca409dbc7b10e7e8ee44d1c3b91e4bf6e2198befdebee6312745267b
    
  3. 設定 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
    
  4. 啟動 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 存取

  1. 設定 KES_SERVER 端點

    此變數會告知 KES CLI 要存取哪個 KES 伺服器。

    export KES_SERVER=https://127.0.0.1:7373
    
  2. 使用用戶端憑證

    這些變數會告知 KES CLI 要使用哪些憑證來存取 KES 伺服器。

    export KES_CLIENT_CERT=client.crt
    
    export KES_CLIENT_KEY=client.key
    
  3. 執行操作

    執行任何根據指派原則允許的 API 操作。

    在本地執行 KES 進行測試時,請使用 -k--insecure 標誌來產生新的金鑰或資料加密金鑰。

    例如,我們可以建立一個金鑰。

    kes key create my-key-1 -k
    

    然後,我們可以使用該金鑰產生新的資料加密金鑰。

    kes key dek my-key-1 -k
    {
      plaintext : UGgcVBgyQYwxKzve7UJNV5x8aTiPJFoR+s828reNjh0=
      ciphertext: eyJhZWFkIjoiQUVTLTI1Ni1HQ00tSE1BQy1TSEEtMjU2IiwiaWQiOiIxMTc1ZjJjNDMyMjNjNjNmNjY1MDk5ZDExNmU3Yzc4NCIsIml2IjoiVHBtbHpWTDh5a2t4VVREV1RSTU5Tdz09Iiwibm9uY2UiOiJkeGl0R3A3bFB6S21rTE5HIiwiYnl0ZXMiOiJaaWdobEZrTUFuVVBWSG0wZDhSYUNBY3pnRWRsQzJqWFhCK1YxaWl2MXdnYjhBRytuTWx0Y3BGK0RtV1VoNkZaIn0=
    }
    

參考資料