21.9. OpenSSL を使用したカスタム IMA 鍵の作成

OpenSSL を使用して、デジタル証明書の CSR を生成し、コードを保護できます。

カーネルは、.ima キーリングでコード署名鍵を検索し、IMA 署名を検証します。コード署名鍵を .ima キーリングに追加する前に、IMA CA キーが .builtin_trusted_keys または .secondary_trusted_keys キーリング内のこの鍵に署名していることを確認する必要があります。

前提条件

  • カスタム IMA CA キーに次の拡張がある。

    • CA ブール値がアサートされた基本制約の拡張。
    • keyCertSign ビットがアサートされているが、digitalSignatureアサートされていない KeyUsage 拡張。
  • カスタム IMA コード署名鍵が次の基準に該当する。

    • IMA CA キーがこのカスタム IMA コード署名鍵に署名している。
    • カスタムキーに subjectKeyIdentifier 拡張が含まれている。

手順

  1. カスタム IMA CA キーペアを生成するには、次のコマンドを実行します。

    # openssl req -new -x509 -utf8 -sha256 -days 3650 -batch -config ima_ca.conf -outform DER -out custom_ima_ca.der -keyout custom_ima_ca.priv
  2. オプション: ima_ca.conf ファイルの内容を確認するには、次のコマンドを実行します。

    # cat ima_ca.conf
    [ req ]
    default_bits = 2048
    distinguished_name = req_distinguished_name
    prompt = no
    string_mask = utf8only
    x509_extensions = ca
    
    [ req_distinguished_name ]
    O = YOUR_ORG
    CN =  YOUR_COMMON_NAME IMA CA
    emailAddress = YOUR_EMAIL
    
    [ ca ]
    basicConstraints=critical,CA:TRUE
    subjectKeyIdentifier=hash
    authorityKeyIdentifier=keyid:always,issuer
    keyUsage=critical,keyCertSign,cRLSign
  3. 秘密鍵と IMA コード署名鍵の証明書署名要求 (CSR) を生成するには、次のコマンドを実行します。

    # openssl req -new -utf8 -sha256 -days 365 -batch -config ima.conf -out custom_ima.csr -keyout custom_ima.priv
  4. オプション: ima.conf ファイルの内容を確認するには、次のコマンドを実行します。

    # cat ima.conf
    [ req ]
    default_bits = 2048
    distinguished_name = req_distinguished_name
    prompt = no
    string_mask = utf8only
    x509_extensions = code_signing
    
    [ req_distinguished_name ]
    O = YOUR_ORG
    CN = YOUR_COMMON_NAME IMA signing key
    emailAddress = YOUR_EMAIL
    
    [ code_signing ]
    basicConstraints=critical,CA:FALSE
    keyUsage=digitalSignature
    subjectKeyIdentifier=hash
    authorityKeyIdentifier=keyid:always,issuer
  5. IMA CA 秘密鍵を使用して CSR に署名し、IMA コード署名証明書を作成します。

    # openssl x509 -req -in custom_ima.csr -days 365 -extfile ima.conf -extensions code_signing -CA custom_ima_ca.der -CAkey custom_ima_ca.priv -CAcreateserial -outform DER -out ima.der