スクリプトは、自己署名証明書という 1 つの証明書のみを生成しています。通常、自己署名証明書はルート証明書と呼ばれます。これは CA 証明書として使用できますが、多くの場合、中間 CA 証明書が作成され、ルート秘密鍵によって署名されます。この中間 CA 証明書は、サーバー証明書に署名するために使用されます。したがって、次の階層があります。
ルート -> CA -> サーバー
CA およびルート証明書は、信頼できる証明書リストに入れることができます。次に、そのリストを信頼するブラウザは、CA またはルート エンティティによって署名された証明書も信頼します。
この階層を持つ必要はありません...ルート証明書を CA として使用し、中間証明書をスキップできます。ルート/サーバー証明書として 1 つの自己署名証明書を使用することもできます。この記事 (自己署名証明書の信頼)を参照してください。
ただし、この階層があると仮定すると、必要なキーと証明書を生成するための OpenSSL コマンドがいくつかあります。
# 1. Create Root private key
openssl genrsa -out root.key 2048
# 2. Create self-signed Root certificate
openssl req -new -key root.key -x509 -out root.crt -days 5000 -sha256
# 3. Create CA private key
openssl genrsa -out ca.key 2048
# 4. Create CA CSR
openssl req -new -key ca.key -out ca.csr -days 5000
# 5. Sign and create CA certificate
openssl x509 -req -in ca.csr -CA root.crt -CAkey root.key -out ca.crt -set_serial 2 -days 5000 -sha256
# 6. Create Server private key
openssl genrsa -out server.key 2048
# 7. Create Server CSR
openssl req -new -key server.key -out server.csr -days 5000
# 8. Sign and create Server certificate
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -out server.crt -set_serial 3 -days 5000 -sha256
キー ビット、有効日数、シリアル番号を変更し、必要に応じて V3 拡張機能を追加します。
また、ブラウザーごとに、信頼するリストが異なることにも注意してください。Chrome と IE は、Windows の既定のリストを使用します。Firefox には独自のリストがあります。