3.6. IBM Secure Execution 証明書とキーの設定


ワーカーノードの IBM Secure Execution (SE) 証明書とキーを設定する必要があります。

前提条件

  • bastion ノードの IP アドレスがある。
  • ワーカーノードの内部 IP アドレスがある。

手順

  1. Key Broker Service (KBS) 証明書とキーを生成します。
  2. アテステーションポリシーフィールドを取得します。
  3. 証明書と証明書失効リスト (CRL) をダウンロードします。
  4. RSA キーを生成します。
  5. ファイルを確認して OpenShift Container Platform ワーカーノードにコピーします。
  6. KBS キーと証明書を使用してクラスター内にシークレットを作成します。

3.6.1. Key Broker Service 証明書とキーの生成

Key Broker Service (KBS) 証明書とキーを生成する必要があります。

手順

  1. 次の例に従って kbs.conf 設定ファイルを作成します。

    [req]
    default_bits = 2048
    default_keyfile = localhost.key
    distinguished_name = req_distinguished_name
    req_extensions = req_ext
    x509_extensions = v3_ca
    
    [req_distinguished_name]
    countryName = Country Name (2-letter code)
    countryName_default = <country_name>
    stateOrProvinceName = State or Province Name (full name)
    stateOrProvinceName_default = <state_name>
    localityName = Locality Name (eg, city)
    localityName_default = <locality_name>
    organizationName = Organization Name (eg, company)
    organizationName_default = Red Hat
    organizationalUnitName = organizationalunit
    organizationalUnitName_default = Development
    commonName = Common Name (e.g. server FQDN or
    YOUR name)
    commonName_default = kbs-service
    commonName_max = 64
    
    [req_ext]
    subjectAltName = @alt_names
    
    [v3_ca]
    subjectAltName = @alt_names
    
    [alt_names]
    IP.1  = <worker_node_ip>
    DNS.1  = localhost
    DNS.2  = 127.0.0.1
    <worker_node_ip>

    次のコマンドを実行して、ワーカーノードの IP アドレスを取得します。

    $ oc get node $(oc get pod -n trustee-operator-system -o jsonpath='{.items[0].spec.nodeName}') -o jsonpath='{.status.addresses[?(@.type=="InternalIP")].address}'
  2. 次のコマンドを実行して、KBS キーと自己署名証明書を生成します。

    $ openssl req -x509 -nodes -days 365 \
       -newkey rsa:2048 \
       -keyout kbs.key \
       -out kbs.crt \
       -config kbs.conf \
       -passin pass:
  3. 次のコマンドを実行して、KBS キーを ibmse ディレクトリーにコピーします。

    $ cp kbs.key /tmp/ibmse/kbs.key
  4. 次のコマンドを実行して、KBS 証明書を ibmse ディレクトリーにコピーします。

    $ cp kbs.crt /tmp/ibmse/kbs.crt

3.6.2. アテステーションポリシーフィールドの取得

Reference Value Provider Service (RVPS) を使用して、アテステーションポリシーフィールドを取得する必要があります。

手順

  1. 次のコマンドを実行して、GetRvps.sh スクリプトをダウンロードするディレクトリーを作成します。

    $ mkdir -p Rvps-Extraction/
  2. 次のコマンドを実行してスクリプトをダウンロードします。

    $ wget https://github.com/openshift/sandboxed-containers-operator/raw/devel/scripts/rvps-extraction/GetRvps.sh -O $PWD/GetRvps.sh
  3. 次のコマンドを実行してサブディレクトリーを作成します。

    $ mkdir -p Rvps-Extraction/static-files
  4. 次のコマンドを実行して、static-files ディレクトリーに移動します。

    $ cd Rvps-Extraction/static-files
  5. 次のコマンドを実行して、pvextract-hdr ツールをダウンロードします。

    $ wget https://github.com/openshift/sandboxed-containers-operator/raw/devel/scripts/rvps-extraction/static-files/pvextract-hdr -O $PWD/pvextract-hdr
  6. 次のコマンドを実行して、ツールを実行可能にします。

    $ chmod +x pvextract-hdr
  7. 次のコマンドを実行して、se_parse_hdr.py スクリプトをダウンロードします。

    $ wget https://github.com/openshift/sandboxed-containers-operator/raw/devel/scripts/rvps-extraction/static-files/se_parse_hdr.py -O $PWD/se_parse_hdr.py
  8. 次のコマンドを実行して、Host Key Document (HKD) 証明書を static-files ディレクトリーにコピーします。

    $ cp ~/path/to/<hkd_cert.crt> .

    static-files ディレクトリーには次のファイルが含まれています。

    • HKD.crt
    • pvextract-hdr
    • se_parse_hdr.py
  9. 次のコマンドを実行して、Rvps-Extraction ディレクトリーに移動します。

    $ cd ..
  10. 次のコマンドを実行して、GetRvps.sh スクリプトを実行可能にします。

    $ chmod +x GetRvps.sh
  11. スクリプトを実行します。

    $ ./GetRvps.sh

    出力例

    ***Installing necessary packages for RVPS values extraction ***
    Updating Subscription Management repositories.
    Last metadata expiration check: 0:37:12 ago on Mon Nov 18 09:20:29 2024.
    Package python3-3.9.19-8.el9_5.1.s390x is already installed.
    Package python3-cryptography-36.0.1-4.el9.s390x is already installed.
    Package kmod-28-10.el9.s390x is already installed.
    Dependencies resolved.
    Nothing to do.
    Complete!
    ***Installation Finished ***
    1) Generate the RVPS From Local Image from User pc
    2) Generate RVPS from Volume
    3) Quit
    Please enter your choice:

    1. ボリュームから参照値プロバイダーサービスを生成するには、2 を入力します。

      Please enter your choice: 2
    2. libvirt プール名として fa-pp を入力します。

      Enter the Libvirt Pool Name: fa-pp
    3. libvirt ゲートウェイ URI を入力します。

      Enter the Libvirt URI Name: <libvirt-uri> 
      1
      1
      ピア Pod シークレットを作成するために使用した LIBVIRT_URI 値を指定します。
    4. libvirt ボリューム名として fa-pp-vol と入力します。

      Enter the Libvirt Volume Name: fa-pp-vol

      出力例

      Downloading from PODVM Volume...
      
      mount: /mnt/myvm: special device /dev/nbd3p1 does not exist.
      Error: Failed to mount the image. Retrying...
      Mounting on second attempt passed
      /dev/nbd3 disconnected
      SE header found at offset 0x014000
      SE header written to '/root/Rvps-Extraction/output-files/hdr.bin' (640 bytes)
      se.tag:  42f3fe61e8a7e859cab3bb033fd11c61
      se.image_phkh:  92d0aff6eb86719b6b1ea0cb98d2c99ff2ec693df3efff2158f54112f6961508
      provenance = ewogICAgInNlLmF0dGVzdGF0aW9uX3Boa2giOiBbCiAgICAgICAgIjkyZDBhZmY2ZWI4NjcxOWI2YjFlYTBjYjk4ZDJjOTlmZjJlYzY5M2RmM2VmZmYyMTU4ZjU0MTEyZjY5NjE1MDgiCiAgICBdLAogICAgInNlLnRhZyI6IFsKICAgICAgICAiNDJmM2ZlNjFlOGE3ZTg1OWNhYjNiYjAzM2ZkMTFjNjEiCiAgICBdLAogICAgInNlLmltYWdlX3Boa2giOiBbCiAgICAgICAgIjkyZDBhZmY2ZWI4NjcxOWI2YjFlYTBjYjk4ZDJjOTlmZjJlYzY5M2RmM2VmZmYyMTU4ZjU0MTEyZjY5NjE1MDgiCiAgICBdLAogICAgInNlLnVzZXJfZGF0YSI6IFsKICAgICAgICAiMDAiCiAgICBdLAogICAgInNlLnZlcnNpb24iOiBbCiAgICAgICAgIjI1NiIKICAgIF0KfQo=
      -rw-r--r--. 1 root root 640 Dec 16 10:57 /root/Rvps-Extraction/output-files/hdr.bin
      -rw-r--r--. 1 root root 446 Dec 16 10:57 /root/Rvps-Extraction/output-files/ibmse-policy.rego
      -rw-r--r--. 1 root root 561 Dec 16 10:57 /root/Rvps-Extraction/output-files/se-message

    5. 次のコマンドを実行して、アテステーションポリシーフィールドの値を取得します。

      $ cat /root/Rvps-Extraction/output-files/se-sample

      出力例

      {
          "se.attestation_phkh": [
              "50a59219c5034f23f69a81893b77f80190dab0ab4781d10b6631d6ed23ef38e4"
          ],
          "se.tag": [
              "ded333bce2d721547ee2b59b1b96e7e5"
          ],
          "se.image_phkh": [
              "50a59219c5034f23f69a81893b77f80190dab0ab4781d10b6631d6ed23ef38e4"
          ],
          "se.user_data": [
              "00"
          ],
          "se.version": [
              "256"
          ]
      }

3.6.3. 証明書と証明書失効リストのダウンロード

IBM 証明書と証明書失効リスト (CRL) をダウンロードする必要があります。

手順

  1. 次のコマンドを実行して、証明書用の一時ディレクトリーを作成します。

    $ mkdir /tmp/ibmse/certs
  2. 以下のコマンドを実行して、ibm-z-host-key-signing-gen2.crt 証明書をダウンロードします。

    $ wget https://www.ibm.com/support/resourcelink/api/content/public/ibm-z-host-key-signing-gen2.crt -O /tmp/ibmse/certs/ibm-z-host-key-signing-gen2.crt
  3. 次のコマンドを実行して、DigiCertCA.crt 証明書をダウンロードします。

    $ wget https://www.ibm.com/support/resourcelink/api/content/public/DigiCertCA.crt -O /tmp/ibmse/certs/DigiCertCA.crt
  4. 次のコマンドを実行して、CRL の一時ディレクトリーを作成します。

    $ mkdir /tmp/ibmse/crls
  5. 次のコマンドを実行して、ibm-z-host-key-gen2.crl ファイルをダウンロードします。

    $ wget https://www.ibm.com/support/resourcelink/api/content/public/ibm-z-host-key-gen2.crl -O /tmp/ibmse/crls/ibm-z-host-key-gen2.crl
  6. 次のコマンドを実行して、DigiCertTrustedRootG4.crl ファイルをダウンロードします。

    $ wget http://crl3.digicert.com/DigiCertTrustedRootG4.crl -O /tmp/ibmse/crls/DigiCertTrustedRootG4.crl
  7. 次のコマンドを実行して、DigiCertTrustedG4CodeSigningRSA4096SHA3842021CA1.crl ファイルをダウンロードします。

    $ wget http://crl3.digicert.com/DigiCertTrustedG4CodeSigningRSA4096SHA3842021CA1.crl -O /tmp/ibmse/crls/DigiCertTrustedG4CodeSigningRSA4096SHA3842021CA1.crl
  8. 次のコマンドを実行して、hdr.bin ファイル用の一時ディレクトリーを作成します。

    $ mkdir -p /tmp/ibmse/hdr/
  9. 次のコマンドを実行して、hdr.bin ファイルを hdr ディレクトリーにコピーします。

    $ cp /root/Rvps-Extraction/output-files/hdr.bin /tmp/ibmse/hdr/
  10. 次のコマンドを実行して、Host Key Document (HKD) 証明書用の一時ディレクトリーを作成します。

    $ mkdir -p /tmp/ibmse/hkds
  11. 次のコマンドを実行して、HKD 証明書を hkds ディレクトリーにコピーします。

    $ cp ~/path/to/<hkd_cert.crt> /tmp/ibmse/hkds/

3.6.4. RSA キーの生成

暗号化用の RSA キーペアを生成する必要があります。

手順

  1. 次のコマンドを実行して RSA のキーペアを生成します。

    $ openssl genrsa -aes256 -passout pass:<password> -out /tmp/encrypt_key-psw.pem 4096 
    1
  2. 次のコマンドを実行して、RSA キーの一時ディレクトリーを作成します。

    $ mkdir -p /tmp/ibmse/rsa
  3. 次のコマンドを実行して encrypt_key.pub キーを作成します。

    $ openssl rsa -in /tmp/encrypt_key-psw.pem -passin pass:<password> -pubout -out /tmp/ibmse/rsa/encrypt_key.pub
  4. 以下のコマンドを実行して encrypt_key.pem キーを作成します。

    $ openssl rsa -in /tmp/encrypt_key-psw.pem -passin pass:<password> -out /tmp/ibmse/rsa/encrypt_key.pem

3.6.5. ワーカーノードへのファイルの検証とコピー

/tmp/ibmse フォルダー構造を確認し、ファイルを OpenShift Container Platform ワーカーノードにコピーする必要があります。

手順

  1. 次のコマンドを実行して、/tmp/ibmse ディレクトリーの構造を確認します。

    $ tree /tmp/ibmse

    出力例

    /tmp/ibmse
    ├──kbs.key
    ├──kbs.crt
    ├── certs
      ├── ibm-z-host-key-signing-gen2.crt
      └── DigiCertCA.crt
    ├── crls
      └── ibm-z-host-key-gen2.crl
      └── DigiCertTrustedRootG4.crl
      └── DigiCertTrustedG4CodeSigningRSA4096SHA3842021CA1.crl
    ├── hdr
      └── hdr.bin
    ├── hkds
      └── <hkd_cert.crt>
    ├── rsa
      └── encrypt_key.pem
      └── encrypt_key.pub

  2. 以下のコマンドを実行して、/tmp/ibmse ディレクトリーから圧縮ファイルを作成します。

    $ tar -czf ibmse.tar.gz -C /tmp/ibmse
  3. 次のコマンドを実行して、.tar.gz ファイルをクラスターの bastion ノードにコピーします。

    $ scp /tmp/ibmse.tar.gz root@<ocp_bastion_ip>:/tmp 
    1
  4. 次のコマンドを実行して、SSH 経由で bastion ノードに接続します。

    $ ssh root@<ocp_bastion_ip>
  5. 次のコマンドを実行して、.tar.gz ファイルを各ワーカーノードにコピーします。

    $ scp /tmp/ibmse.tar.gz core@<worker_node_ip>:/tmp 
    1
  6. 次のコマンドを実行して、各ワーカーノードで .tar.gz を抽出します。

    $ ssh core@<worker_node_ip> 'sudo mkdir -p /opt/confidential-containers/ && sudo tar -xzf /tmp/ibmse.tar.gz -C /opt/confidential-containers/'
  7. 次のコマンドを実行して、ibmse フォルダーの権限を更新します。

    $ ssh core@<worker_node_ip> 'sudo chmod -R 755 /opt/confidential-containers/ibmse/'

3.6.6. Key Broker Service のシークレットの作成

Key Broker Service (KBS) キーと証明書を使用して、クラスター内にシークレットを作成する必要があります。

手順

  1. 次のコマンドを実行して、kbs.crt ファイルを Base64 でエンコードされた文字列に変換します。

    $ cat /tmp/ibmse/kbs.crt | base64 -w 0
  2. kbs-https-certificate.yaml マニフェストの文字列を記録します。
  3. 次の例に従って、kbs-https-certificate.yaml マニフェストファイルを作成します。

    apiVersion: v1
    kind: Secret
    metadata:
     name: kbs-https-certificate
     namespace: trustee-operator-system
    data:
     https.crt: <kbs_crt_value>
    <kbs_crt_value>
    kbs.crt ファイルから作成した Base64 でエンコードされた文字列を指定します。
  4. 次のコマンドを実行して、KBS 証明書を含むシークレットを作成します。

    $ oc create -f kbs-https-certificate.yaml
  5. 次のコマンドを実行して、kbs.key ファイルを Base64 でエンコードされた文字列に変換します。

    $ cat /tmp/ibmse/kbs.key | base64 -w 0
  6. kbs-https-key.yaml マニフェストの文字列を記録します。
  7. 次の例に従って、kbs-https-key.yaml マニフェストファイルを作成します。

    apiVersion: v1
    kind: Secret
    metadata:
      name: kbs-https-key
      namespace: trustee-operator-system
    data:
     https.key: <kbs_key_value>
    <kbs_key_value>
    kbs.key ファイルから作成した Base64 でエンコードされた文字列を指定します。
  8. 次のコマンドを実行して、KBS キーを使用してシークレットを作成します。

    $ oc create -f kbs-https-key.yaml
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る