SSL通信について、以下の理解であっているか教えてください。
SSL通信について、以下の理解であっているか教えてください。
以下内容に対して、正しいか間違っているか教えてください。
私のSSL通信に対する理解
SSLの大まかな仕組み(下記はTLS1.2での認識記事(TLS1.3については、シーケンスそのものが変更されているらしいので、調査中))
-
こちらの記事がわかりやすかった。
- ザクっとまとめると、以下の手順?(間違っているかもしれないので、間違っていたらご指摘ください。)
- クライアント(ブラウザやopensslなどのssl通信を行うためのソフト)が、サーバーに SSL 通信のリクエスト
- サーバーが秘密鍵と公開鍵を生成(秘密鍵はサーバー管理者が事前に作成して、証明書の発行時に対応する公開鍵を付与する)
- 公開鍵を証明書に含み、クライアントに送付
- クライアントが共通鍵を生成
- サーバーから送られた証明書内に含まれる公開鍵で共通鍵を暗号化しサーバーに送付
- サーバーは秘密鍵で共通鍵を復号
- クライアントとサーバー以外の誰か(第三者)により改竄されてない事が担保されるので、以降共通鍵で通信を行う
- ザクっとまとめると、以下の手順?(間違っているかもしれないので、間違っていたらご指摘ください。)
-
公開鍵に対応する秘密鍵を持っているのはのみなので、
復号できる=改竄されていない
ことが担保できる。- しかし、公開鍵そもそもが改竄されていないかどうかは判別できない
- そのために、証明書チェーンという仕組みが存在する
- 仮に、サーバー証明書・中間証明書・ルート証明書のみだと前提の上だと、以下の様な形
- サーバー証明書を中間証明書が認証し、サーバー証明書に含まれる公開鍵が信頼できる事を証明
- 中間証明書をルート証明書が認証し、中間証明書に含まれる公開鍵が信頼できる事を証明
- 仮に、サーバー証明書・中間証明書・ルート証明書のみだと前提の上だと、以下の様な形
あれ、ルート証明書を認証するのはどこ?
上記サイトによると…
そのためルート証明書の検証を行う場合は、 接続元クライアントに インストールされている CA証明書群の公開鍵 と比較を行います。
なるほど。
クライアント(Opensslなどの、ssl通信を行うためのソフト)にそもそもルート証明書用の公開鍵の認証リスト?が入っており、そいつがルート証明書を認証するのか。
どこかのレッスンで見たスライドがわかりやすかったので、貼っておきます。
以上です。
忌憚ない、コメント・ご意見お待ちしてます。