通常、ファイルには証明書が 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 ファイルの使用時には一般に、システム エンドポイントの構成オプションで証明書のパスワードが必要になり、キー ファイルのパスワードは必要ありません。
このような証明書を生成するには、次の手順を実行します。
openssl pkcs12 -export -in <CertChainID.pem> -inkey <PrivKey.pem> -passin pass <Passwd> -passout pass <P12Passwd> -out <CertChainID.p12> -name <CN_name>