4.6. secureboot の鍵の追加

KMM Kernel Module Management (KMM) を使用してカーネルモジュールに署名するには、証明書と秘密鍵が必要です。これらの作成方法の詳細は、公開鍵と秘密鍵のペアの生成 を参照してください。

公開鍵と秘密鍵のペアを抽出する方法の詳細は、秘密鍵を使用してカーネルモジュールに署名する を参照してください。手順 1 ~ 4 を使用して、キーをファイルに抽出します。

手順

  1. 証明書を含む sb_cert.cer ファイルと、秘密鍵を含む sb_cert.priv ファイルを作成します。

    $ openssl req -x509 -new -nodes -utf8 -sha256 -days 36500 -batch -config configuration_file.config -outform DER -out my_signing_key_pub.der -keyout my_signing_key.priv
  2. 次のいずれかの方法を使用して、ファイルを追加します。

    • ファイルを シークレット として直接追加します。

      $ oc create secret generic my-signing-key --from-file=key=<my_signing_key.priv>
      $ oc create secret generic my-signing-key-pub --from-file=key=<my_signing_key_pub.der>
    • base64 エンコーディングでファイルを追加します。

      $ cat sb_cert.priv | base64 -w 0 > my_signing_key2.base64
      $ cat sb_cert.cer | base64 -w 0 > my_signing_key_pub.base64
  3. エンコードされたテキストを YAML ファイルに追加します。

    apiVersion: v1
    kind: Secret
    metadata:
      name: my-signing-key-pub
      namespace: default 1
    type: Opaque
    data:
      cert: <base64_encoded_secureboot_public_key>
    
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: my-signing-key
      namespace: default 2
    type: Opaque
    data:
      key: <base64_encoded_secureboot_private_key>
    1 2
    namespace - default を 有効な namespace に置き換えます。
  4. YAML ファイルを適用します。

    $ oc apply -f <yaml_filename>

4.6.1. キーの確認

キーを追加したら、キーが正しく設定されていることを確認する必要があります。

手順

  1. 公開鍵シークレットが正しく設定されていることを確認します。

    $ oc get secret -o yaml <certificate secret name> | awk '/cert/{print $2; exit}' | base64 -d  | openssl x509 -inform der -text

    これにより、シリアル番号、発行者、サブジェクトなどを含む証明書が表示されます。

  2. 秘密鍵シークレットが正しく設定されていることを確認します。

    $ oc get secret -o yaml <private key secret name> | awk '/key/{print $2; exit}' | base64 -d

    これにより、-----BEGIN PRIVATE KEY----- および -----END PRIVATE KEY----- 行で囲まれたキーが表示されます。