質問: 個人的にはサイトBの「HTTPSだけど証明書が自己署名証明書」方がセキュアなのではないかと考えています。 なぜなら、自己署名証明書の問題はHTTP通信でも抱えている問題だと思うからです。 ですが、**ChromeなどブラウザではHTTPはほとんど警告なしに表示するのに、証明書が信頼できないものは過剰な警告を出す**ので、 Chromeが「HTTPのほうがマシ(よりセキュア)」と言っているようなきがするのです。 こういう背景で質問して、スッキリしたいと思いました。 私の自己署名証明書の問題点の理解は、以下のサイトからです。 Qiita記事: オレオレ証明書を使いたがる人を例を用いて説得する から引用させていただくと、 > > 1. 暗号化。サーバ側とクライアント側で暗号化/復号化を行うことにより、通信経路上での盗聴・改竄を防ぎます。 > > > 2. 通信相手が正しいことの保障。DNS cache poisoningや、MITM(Man in the middle)によるSSL終端など、攻撃者によって通信相手が変更された場合に警告を表示することで、攻撃者による盗聴・改竄を防ぎます。 > > > 3. 改竄の検出。サーバ側で証明書を使って署名することで、通信経路上で改竄された場合にもクライアント側で受信した際に改竄を検出することができます。 > > > 1は自己署名証明書でも可能 2, 3は自己署名証明書では問題になる
回答: > > 1は自己署名証明書でも可能 > > > もちろん、オレオレ証明書をルートに入れればそれで問題ないですが、そうしなかった場合、**攻撃者が**偽の証明書を提示して中間者攻撃を仕掛けている場合も考えられますので、**1すら担保されません**。「HTTPSなのに証明書がおかしい」というのは、そういった攻撃を示唆するものですので、「単なるHTTP」以上に警告する必要があります。 なお、「オレオレ証明書」と一口に言っても、いくつかパターンがあります(高木浩光さんによる区分)。 このうち、第3種・第4種は「使う人のマシンにルート証明書を取り込む」ことで、(証明書の不正発行に関するリスクを除けば)普通のHTTPSと同様に警告なしで使えます。第5種はちょっと仕方ない部分があるのですが、第6種は単なる**設定ミス**です。