📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

25行目: 25行目:
<br><br>
<br><br>


== 鍵ペア ==
== 鍵ペア (秘密鍵 / DER) ==
秘密鍵ファイル (.priv) および DERファイル (.der) は、公開鍵暗号方式における鍵ペアを表現するファイルである。<br>
秘密鍵ファイル (.priv) および DERファイル (.der) は、公開鍵暗号方式における鍵ペアを表現するファイルである。<br>
これらのファイルは、カーネルモジュールの署名と検証に重要な役割を持つ。<br>
これらのファイルは、カーネルモジュールの署名と検証に重要な役割を持つ。<br>
63行目: 63行目:
<br>
<br>
これらのファイルを適切に使用することにより、MOKシステムはセキュアブート環境下でもカスタムモジュールの安全な使用を可能にしている。<br>
これらのファイルを適切に使用することにより、MOKシステムはセキュアブート環境下でもカスタムモジュールの安全な使用を可能にしている。<br>
<br><br>
== 設定ファイル ==
鍵ペア (秘密鍵 / DER) を生成する場合、OpenSSL等を使用して証明書要求 (CSR) と自己署名証明書を生成するための設定を定義する必要がある。<br>
<br>
この定義を使用することにより、MOKシステムで使用するための属性と拡張機能を持つ鍵ペアと証明書を生成することができる。
生成された.privファイルは秘密鍵、.derファイルは公開鍵証明書をDERフォーマットで含むことになる。
以下に示す設定ファイルの定義は、セキュアブート環境でカーネルモジュールの署名に使用される証明書の要件を満たすように調整されている。
特に、<code>keyUsage</code>が<code>digitalSignature</code>に設定されているため、この鍵がモジュール署名専用であることを示している。
<br>
<syntaxhighlight lang="ini">
[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
prompt = no
string_mask = utf8only
x509_extensions = myexts
[ req_distinguished_name ]
O = SUSE Linux Products GmbH            # 任意の名前
CN = SUSE Linux Enterprise Secure Boot  # 任意の名前
emailAddress = suse@localhost          # 任意のメールアドレス
[ myexts ]
basicConstraints=critical,CA:FALSE
keyUsage=digitalSignature
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid
</syntaxhighlight>
<br>
* [req]セクション
** default_bits
**: 鍵のビット長を指定する。
**: 上記の例に記述されている4096とは、強力な暗号化を提供する。
** distinguished_name
**: 証明書の識別名 (DN) の詳細を定義するセクションを指定する。
** prompt
**: <code>no</code>を指定する場合、対話的なプロンプトを無効にして、ファイルから直接情報を読み取る。
** string_mask
**: <code>utf8only</code>を指定する場合、文字列をUTF-8エンコーディングに制限する。
** x509_extensions
**: 証明書に追加する拡張機能を定義するセクションを指定する。
**: <br>
**: myexts
*: <br>
* [req_distinguished_name]セクション
** O
**: 組織 (Organization) 名を指定する。
** CN
**: 共通名 (Common Name) を指定する。
**: 一般的には、証明書の主要な識別子として使用する。
** emailAddress
**: 連絡先のメールアドレスを指定する。
*: <br>
* [myexts]セクション (X.509証明書拡張)
** basicConstraints=
**: <code>critical,CA:FALSE</code>を指定する場合、この証明書が認証局 (CA) でないことを示し、このフィールドを重要 (critical) とマークする。
** keyUsage
**: <code>digitalSignature</code>を指定する場合、この鍵のの使用目的がデジタル署名であることを指定する。
** subjectKeyIdentifier
**: <code>hash</code>を指定する場合、証明書の公開鍵のハッシュを含む識別子を追加する。
** authorityKeyIdentifier
**: <code>keyid</code>を指定する場合、証明書発行者の公開鍵の識別子を追加する。
<br><br>
<br><br>