自己署名SSL証明書は誤った安心感ですか?
盗聴されている場合、ユーザーはいつものように証明書を受け入れるだけです。
興味深い質問ですが、私の意見では用途によって異なります。セッションが暗号化されているという点では引き続き保護されていますが、ユーザー/クライアントにCAルート証明書を配布しない限り、提示されたSSL証明書が正しいかどうかを確認する方法はありません。内部テスト/開発プロジェクトの場合、これはうまく機能します。ユーザーに配布するルートCA証明書を生成し(WindowsのグループポリシーとLinux/BSDのopensslコマンドラインで実行できます)、そのルート証明書を使用します。 CSRに署名します。ユーザーには警告などが表示されず、証明書が内部CAによって署名されていることがわかります。
これを保証できない外部サイトの場合でも、接続を介してパスワードやその他の機密情報を送信する場合は、SSLを使用しないよりも自己署名証明書の方が優れていると思います。
しかし、プラス面には、非常に安価な「商用」証明書発行者がたくさんあります GoDaddy はその1つです。年間約40ユーロで証明書を取得できます。 GoDaddyは、オープンソースプロジェクトのWebサイトに無料の証明書も提供しています。
狭い技術的根拠と、一般的根拠に基づいて、私は反対します。
狭い技術的根拠は、OPが自己署名証明書について尋ねたことであり、他のいくつかの回答はプライベートCAによって署名された証明書を参照していますが、これは少し異なる問題です。しかし、それほど大きな違いはないので、これは実際には単なる通過点です。
主な反対点は、商業的に署名された証明書が取るに足らない費用以上である限り、そして年間40ドルはではないこの地球上の多くの人々-自己署名証明書は、インターネットセキュリティで果たすべき主要な役割を担っています。ただし、制限が認識されている場合。
自己署名証明書は、known_hosts
ファイルのsshキーのようなものです。独立した検証なしでは、自分が信じているシステムと話していることを保証できません。しかし、これはcan現在話しているシステムが、前回会話したと思ったときに話していたシステムと同じであることを保証します。私たちは常にsshキーをキャッシュしており、known_hosts
ファイル内の公開キーの一部以上を個別に検証するシステム管理者にまだ会ったことはありません。
自己署名証明書(さらに言えば、有効ではないCAによって署名された証明書)は、SSLを使用しないことよりもはるかに優れています。 DNSレコードのもう一方の端、および現在回線上にいる中間者。彼らが独立して証明書を検証する場合、認証と暗号化は、認識されたCAによって署名された証明書によって提供されるものと少なくとも同じくらい強力です。
さらに、認定されたCAによって署名された証明書の使用を唯一無二のインターネットセキュリティ万能薬として提示したい場合、 中国政府の署名CAを標準のMozillaに含めることなど) bundle 、および Comodoによって署名された不正なSSL証明書 。
外部サイトの場合、ユーザーにCA証明書がインストールされていません(これが最も一般的なケースです)はい、自己署名証明書は誤った安心感を与えます、したがって、それは役に立たないよりも悪いです:
まず、事前にインストールされたCA証明書がない場合、ユーザーは証明書が本当に攻撃者からのものであり、攻撃者からのものではないことをどのように確認しますか?もちろん、証明書フィールド(CN、指紋など)を照合することによって-しかし、何に対してですか?だから今、あなたは証明書を検証するためにサイドチャネルが必要です-そして、私が見たいくつかの例では、サポートラインオペレーター(検証のためにサイドチャネルとして役立つべきであった)は何の手掛かりもありませんつまり、は、また、このようなサイドチャネルの操作は、信頼できるCA署名付き証明書を取得するよりも桁違いに高価であるため、ユーザーは盲目的にあなたを信頼する必要があります。
第二に、ユーザーが取得する恐ろしい警告は恐ろしい理由で恐ろしいです:ユーザーは提示された証明書を検証できない/できないため、データを安全に送信していますElbonian Haxx0r D00dz。
第三に、そして最悪のことは、ユーザーを鈍感にしていることです:「まあ、彼らは私に https: //mysite.example.com/ 、およびアンビルが頭に落ちなかったので、金魚も死ななかった;すごい、つまり実際の意味のない別の警告ボックスなので、このボックスに遭遇したときはいつでも無視できます-とにかく素敵なロックアイコンが表示されますが、それは重要です。」
言い換えると、保護のレベルはプレーンHTTPに匹敵します(送信中のスニッフィングを除く:データは転送中に暗号化されますが、これはエンドポイント検証なしのかなり貧弱な機能です)が、保護感が高すぎる。悪い車の例え:「ABSがあるので、悪条件でも安全に運転できるようになりました」-ただし、ABSは車の販売パンフレットにのみ存在し、実際には車には存在しません。
推奨される読み物: OWASP SSLのベストプラクティス
TL; DR:公開サイトで自己署名証明書を使用することにより、一度に1人の無知なユーザーがネットをより悪い場所にしています。
依存します。安全性が高まると思われる場合は、誤った安心感で危険なことを行うことを選択すると、リスクが高まります。機能的にHTTPと同等に扱う場合は、少し安全だと思います。
SSL/HTTPSを使用しないと、ネットワーク(またはログインしているローカルネットワーク)にWiresharkが設定されていれば、平文で送信されたユーザー名/パスワードを簡単に傍受して取得できます。
自己署名SSLを使用すると、単純にリッスンすることはできませんが、サイトを偽装し、DNSを変更して中間者(MITM)攻撃を行う可能性があります。これは依然として脅威ですが、彼らが達成することは非常に困難です。
自己署名SSLを使用する際のもう1つの問題は、多くのブラウザが自己署名証明書を主要なセキュリティ脅威として扱い、巨大な赤いページ(クロムなど)を入力する前に警告することです。 http://www.sslshopper.com/article-ssl-certificates-in-google-chrome.html これは大きな不便な場合があります。
つまり、特に安全である必要がないもの(クレジットカードデータや社会保障番号がないなど)を実行し、適切な証明書を用意できない場合は、自己署名証明書に意味があるかもしれません。 (他のネットワークユーザーがログイン情報を簡単に盗聴できないようにするためです)。
それは、あなたが「セキュリティ」で何を意味するか、そしてどれが範囲であるかによる。
たとえば、ブラウザにはデフォルトで受け入れられているCAのセットが付属しています。つまり、このCAによって発行されたすべての証明書は、ブラウザーによって(dns名と一致するまで)受け入れられます。さて、いくつかの邪悪な政府がCAを所有している、またはアクセスしているサイトの証明書をCAに発行させることができると想像してください。次に、MITMを実行するのは非常に簡単です。接続をプロキシし、ブラウザに証明書を送信します。ブラウザは「信頼された」CAからのものであるため、ブラウザはそれを受け入れます。 DNSトランスペアレントになるまで(これはMITMのベースです)、これで問題ありません。
したがって、「承認されたCAのリスト」は、このCAの1つがいくつかの邪悪な政府と協力するまで、基本的に大きなセキュリティホールです。独自のCAを持っている方がはるかに優れています。
もちろん、独自のCA証明書を自分で制御するクライアントにインストールできるため、会社またはホームサーバーでそれを行うことができます。公開サーバーでは、例外を追加するか、証明書を追加するように要求するユーザーに対処することはできません。
つまり、「セキュリティ」の意味と範囲によって異なります。クライアントを所有している場合、確かに、クライアント自体に自分のCAの証明書をインストールするまで、自己署名はより安全です。
もちろん、すべてのクライアントを所有しているわけではないので、公開Webサイトでそれを行うことはできません。したがって、安全ではないさまざまな動作の危険にさらされます。