マルチ証明書ファイル

通常、ファイルには証明書が 1 つしかありません。OpenSSL は一般的にこれを前提としているため、サーバー証明書およびクライアント証明書を処理する際には、最初のもの以降は無視されます。

PEM、PKCS7、および PKCS12 形式のファイルには、複数の証明書を含めることができます。これは、信頼する CA のルート証明書のバンドル、証明書の検証チェーン、または単一ファイル内の完全なエンドポイント ID を格納する場合に便利です。このいずれかのファイルを作成するには、個々の証明書を 1 つのファイルに連結する必要があります。

PEM ファイルおよび PKCS7 ファイルの場合、連結を行うには、テキスト エディターを使用してファイルを別のファイルに追加します。必要に応じて、テキスト エディターを使用して元のファイルを分割できます。個々の証明書のデータを変更しないようにする必要があります。各証明書は次の形式をとり、END CERTIFICATE 行で終了します。

optional-header-info
------BEGIN optional-text CERTIFICATE-----
...
------END optional-text CERTIFICATE----- 

BEGIN 行および END 行の内側のデータを変更または分割しない限り、証明書の整合性は維持されます。最初に署名された時点からバイナリ構成が維持されていないと、証明書は役に立たなくなります。

PKCS12 ファイルの場合、連結または分割プロセスを実行するには OpenSSL を使用する必要があります。PKCS12 ファイル内の証明書およびキーの数は、その用途によって異なります。次のいずれかまたはすべてを含めることができます。

最も一般的な PKCS12 のバリエーションは、単一の ID 証明書とそれに関連付けられた署名 CA 中間証明機関の集合を含むファイルです。通常、最後の CARoot 証明書、および ID 証明書に保持されているパブリック キーと一致するプライベート キー ファイルは含まれません。これにより、クライアントは、信頼チェーン全体で唯一欠けている要素である、単一の CARoot 証明書を所有する ID を確認できます。

PKCS12 の ID、証明書チェーン、およびプライベート キー ファイルを作成する際、そのファイルは通常、ファイル自体のパスワードで保護されます。プライベート キー ファイルが通常、パスワードで保護されるのと同様です。このため、PKCS12 ファイルの使用時には一般に、システム エンドポイントの構成オプションで証明書のパスワードが必要になり、キー ファイルのパスワードは必要ありません。

このような証明書を生成するには、次の手順を実行します。

  1. PEM 形式の証明書を単一の PEM ファイルに連結します。たとえば、このファイルに CertChainID.pem という名前を付けることができます。
  2. チェーン内の ID 証明書に関連付けられているプライベート キー ファイルがあれば、そのファイルを指定します。たとえば、このファイルに PrivKey.pem という名前を付け、そのパスワードとして Passwd を指定できます。
  3. 新しく作成した PKCS12 ファイルのパスワードを選択します。たとえば、P12Passwd と指定できます。
  4. PKCS12 ファイルの出力名を選択します。たとえば、このファイルに CertChainID.p12 という名前を付けることができます。
  5. チェーン内の ID 証明書の共通名 (CN) を指定します。たとえば、CN_name と指定できます。
  6. コマンド ラインで次のように入力します。
    openssl pkcs12 -export -in <CertChainID.pem> -inkey <PrivKey.pem> -passin pass <Passwd> -passout pass <P12Passwd> -out <CertChainID.p12> -name <CN_name>