中間証明書はどれだ！【SSL証明書】


https://www.digicert.com/help/

example.com

画像のINTERMEDIATE CERTIFICATEが中間証明書で、SERVER CERTIFICATEがサーバー証明書です

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435735/04ff980f-bdfd-ff4f-e423-b08cd859f2d7.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435735/3450a59b-5b31-0a6a-66be-316957156ca2.png)

amazon.co.jp

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435735/6d9db6f9-f2ae-0ac5-628e-51b780f7add8.png)


https://sectigostore.com/ssl-tools/ssl-checker.php

CHAINってあるのが中間証明書でSERVERがサーバー証明書です

example.com

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435735/fbbd26fd-4338-a8ae-c9a1-a683ac776e64.png)

amazon.co.jp

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435735/0f2591fb-5648-c45a-a36d-a3530d385a14.png)


https://www.sslshopper.com/ssl-checker.html

Serverがサーバー証明書でChainが中間証明書です

example.com

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435735/d094431c-a595-4abd-56fe-e1aa86ed7b1d.png)

amazon.co.jp

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435735/ff4e3bd3-56df-b881-7100-75076a263373.png)


# ルート証明書の確認方法

設定から確認します

Chrome

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435735/9dc5560f-7029-6c77-d329-55bbc0bac0dd.png)


Edge

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435735/5ac10c80-89d3-079c-90dc-b4268c540f65.png)

# 中間証明書はなぜ必要？

中間証明書が必要な理由は、セキュリティと信頼性を高めるための重要な仕組みの一部として機能しているからです。具体的な理由は以下の通りです。

### 1. **セキュリティ強化のための階層構造**
   - **ルート証明書**は、すべての証明書チェーンの最上位にあり、オペレーティングシステムやブラウザに信頼される証明書としてプリインストールされています。しかし、ルート証明書自体を直接使用してサーバー証明書を発行すると、セキュリティリスクが高まります。
   - **中間証明書**は、ルート証明書の下に位置し、サーバー証明書を発行する役割を果たします。この階層構造により、もし中間証明書が危険にさらされたとしても、ルート証明書が直接影響を受けることを避けられます。ルート証明書自体を頻繁に使わないため、最も重要な証明書を安全に保護することができます。

### 2. **証明書の柔軟な管理**
   中間証明書を使用することで、認証局（CA）はサーバー証明書をより柔軟に発行・管理できます。たとえば、大手CAは異なる用途やセキュリティ要件に応じて複数の中間証明書を作成し、それぞれで異なるサーバー証明書を発行できます。
   - これにより、特定のセクターや顧客向けにカスタマイズされた証明書を発行したり、万一のトラブルがあった際に、個別に対応できるようになります。

### 3. **証明書の失効と再発行の容易さ**
   万一、中間証明書が危険にさらされた場合、その中間証明書のみを失効させればよく、ルート証明書自体を失効させる必要はありません。ルート証明書を失効させると、そのルート証明書に依存するすべての証明書が無効になるため、影響が非常に大きくなります。
   - これに対して、中間証明書の失効は影響を最小限に抑えながら問題を解決できます。

### 4. **証明書チェーンの信頼性の向上**
   中間証明書を介してルート証明書からサーバー証明書までの「信頼のチェーン」が構築されます。このチェーンを使って、クライアント（ブラウザなど）はルート証明書から始まり、中間証明書をたどり、最終的にサーバー証明書が信頼できるかどうかを確認します。
   - これにより、ウェブブラウザやその他のクライアントは、サーバーが本物であり、セキュアな接続が可能であることを確認できます。

### まとめ
中間証明書は、セキュリティを強化し、管理の柔軟性を持たせるために設計された仕組みです。ルート証明書を直接使うリスクを減らし、証明書の管理や失効を簡素化する役割を果たしながら、サーバー証明書の信頼性を確保しています。これにより、インターネット上での安全な通信が可能になります。

# 中間証明書の最大数

中間証明書のチェーン数に関して、標準的なSSL/TLS証明書の信頼チェーンに含まれる中間証明書の数には厳密な最大値はありませんが、実務上、通常は**1〜3個**程度に収まるのが一般的です。

### 理由と考慮点

1. **実用的な制約**:
   - クライアント（ブラウザやアプリケーション）やサーバーは、証明書チェーンを検証する際に一定の時間と計算リソースを必要とします。証明書チェーンが長くなると、証明書の検証に時間がかかり、接続の確立に悪影響を与える可能性があります。
   - 一部のブラウザやクライアントは、長すぎる証明書チェーンを処理できない場合があり、接続が失敗するリスクが増加します。

2. **実務上の慣習**:
   - 多くの認証局（CA）は、1つか2つの中間証明書を使用してサーバー証明書を発行しています。これは、適切なバランスを保ちながら、信頼の階層を構築するためです。
   - 1つのルート証明書から複数の中間証明書を発行し、それらが特定のサーバー証明書を発行するという構造は、広く使用されている一般的なパターンです。

3. **RFC標準の推奨事項**:
   - TLS/SSLの仕様を規定するRFC 5280では、証明書の検証時に発生する計算負荷や遅延を最小限に抑えるため、あまりにも長い証明書チェーンを避けることが推奨されています。ただし、明確な「最大個数」は定義されていません。

### まとめ
実務上の観点では、中間証明書の数は通常**1〜3個**程度です。それ以上の長さになることはまれであり、もしチェーンが長くなりすぎると、クライアントが正しく証明書を検証できないリスクや、接続速度が遅くなる可能性が増えます。

# なぜクロスルート証明書が必要？

クロスルート証明書（Cross-Signed Root Certificate）が必要な理由は、特定の認証局（CA）のルート証明書がまだ全てのクライアント（ブラウザやオペレーティングシステム）で信頼されていない場合や、互換性を確保したり、移行期間をサポートするためです。クロスルート証明書を使用することで、複数の信頼されたルート証明書から同じ証明書を検証できるようになり、証明書の信頼性や互換性が向上します。

以下は、クロスルート証明書が必要とされる具体的な理由です。

### 1. **新しいルート証明書の普及を支援**
   - ルート証明書が新しく作成された場合、それが全てのデバイスやブラウザで信頼されるまでには時間がかかります。通常、ルート証明書はオペレーティングシステムやブラウザのアップデートによって配布されますが、ユーザーがアップデートを行わなかったり、古いバージョンを使い続けている場合、新しいルート証明書をすぐに認識できません。
   - そこで、既に広く信頼されている別のCAのルート証明書によって新しいルート証明書を「クロスサイン」することで、古いシステムでも新しい証明書を信頼できるようにします。このプロセスを通じて、新しい証明書を徐々に普及させることができます。

### 2. **ルート証明書の移行を容易にする**
   - 認証局が新しいルート証明書を導入する場合、既存の証明書が古くなるまでの間、互換性を保つ必要があります。クロスルート証明書を使用することで、古いルート証明書と新しいルート証明書の両方が利用可能になり、スムーズな移行が可能になります。
   - 移行期間中、クライアントはどちらのルート証明書を使っても同じサーバー証明書を検証できます。これにより、証明書の失効やセキュリティリスクを最小限に抑えながら、新しい証明書へ移行できます。

### 3. **互換性の確保**
   - 一部の古いシステムやデバイスでは、新しい認証局のルート証明書が信頼されていない場合があります。クロスルート証明書を使用することで、既に信頼されているルート証明書を利用して、新しい認証局の証明書の信頼性を保証できます。
   - これにより、古いブラウザやデバイスも新しい証明書を受け入れることができ、ユーザーエクスペリエンスが損なわれることなく、互換性が保たれます。

### 4. **地理的な制約や規制への対応**
   - 特定の地域では、特定のルート証明書が認められていない場合や、独自の規制が存在する場合があります。クロスルート証明書を使うことで、異なる地域や規制に対応した信頼チェーンを構築し、広範囲にわたる互換性を確保できます。

### 5. **信頼性向上とバックアップ**
   - クロスルート証明書を利用することで、万が一のルート証明書の失効や問題が発生した際に、他の信頼されたルート証明書を通じて認証プロセスを維持できます。これにより、システムの冗長性が確保され、証明書の信頼性が向上します。

### まとめ
クロスルート証明書は、新しいルート証明書の普及を助け、移行期間を支援し、互換性を確保するために必要です。これにより、新旧のシステムやデバイス間での安全で円滑な接続が可能となり、証明書インフラの柔軟性と信頼性が向上します。

# なぜクロスルート証明書が証明書を検証できるのか？

ルート証明書もクロスルート証明書もSubjectと公開鍵が同じになっているから

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435735/47878094-92bb-e964-1a70-a6d4a4a448a6.png)


https://ah-2.com/post/cross_root_certificate/#%E3%81%AA%E3%81%9C%E3%82%AF%E3%83%AD%E3%82%B9%E3%83%AB%E3%83%BC%E3%83%88%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%81%8C%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%82%92%E6%A4%9C%E8%A8%BC%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%AE%E3%81%8B