アプリケーションがルート CA を検証できない (OS のみが検証できる) というヒントがどこかにありました。以下の点について回答をいただければと思います。
a) OS だけがルート CA を検証できるというのは本当ですか?
b) (「はい」の場合) アプリケーション (特に Web ブラウザー) がルート CA を検証できないのはなぜですか?
c) (「はい」の場合) では、ブラウザはどのようにして SSL 証明書を検証できますか?
アプリケーションがルート CA を検証できない (OS のみが検証できる) というヒントがどこかにありました。以下の点について回答をいただければと思います。
a) OS だけがルート CA を検証できるというのは本当ですか?
b) (「はい」の場合) アプリケーション (特に Web ブラウザー) がルート CA を検証できないのはなぜですか?
c) (「はい」の場合) では、ブラウザはどのようにして SSL 証明書を検証できますか?
「ルート CA」は、私たちが信頼する組織です。組織は、証明書 (公開鍵と秘密鍵のペア) を生成しました。公開鍵は、OS にプリインストールされていることを除いて、他の既存の公開鍵と何ら変わりはありません。
通常の HTTPS サイトを閲覧すると、公開鍵を含む証明書を取得します (たとえば、https://www.google.comの証明書)。最初はその証明書を信頼していませんが、OS またはアプリのいずれかが、証明書に、既知のルート CA によって署名されているという証拠が含まれていることを確認できます...または、別の信頼できる証明書 (種類の証明書) によって署名されている証拠が含まれていますの再帰)
このチェーン検証は、ルート CA 証明書の場合と同じ方法では実行できません。これはルートであるため、他の信頼できる証明書は署名していません (これがルートである理由です)。Trusted Root Certificate Store
ただし、OSに既にインストールされているかどうかを確認するなど、誰でも確認できます。
つまり、それがルート証明書と通常の証明書の違いです。
そうは言っても、OS または任意のアプリは、あらゆる種類の証明書を検証できます。
いいえ、アプリケーションがルート CA を検証できないというのは真実ではありません。
たとえば、ブラウザは常にそれを行います。
別の例として、コア Java には一連のパッケージ全体 (JSEE フレームワークとサポート クラス) があり、特に証明書 (ルート証明書を含む) を検証できるアプリケーションを作成できます。