回答:
興味深い質問、それは私の意見での使用に依存します。セッションは暗号化されているという点で保護されていますが、CAルート証明書をユーザー/クライアントに配布しない限り、提示された正しいSSL証明書であるかどうかを知る方法はありません。内部テスト/開発プロジェクトの場合、これはうまく機能します。ユーザーに配布するルートCA証明書を生成し(WindowsのグループポリシーとLinux / BSDのopensslコマンドラインで実行できます)、そのルート証明書を使用しますCSRに署名します。ユーザーには警告などは表示されず、証明書が内部CAによって署名されていることがわかります。
これを保証できない外部サイトについては、パスワードまたはその他の機密情報を接続経由で送信する場合、自己署名証明書はSSLをまったく使用しないよりも優れていると思います。
ただし、プラス面には、非常に安価な「商用」証明書発行者がたくさんあり、GoDaddyもその1つです。年間約40ユーロで証明書を取得できます。GoDaddyは、OpenSourceプロジェクトのWebサイトに無料の証明書を提供します。
私は、狭い技術的根拠と一般的な根拠の両方で、意見が分かれます。
狭い技術的根拠は、OPが自己署名証明書について尋ね、他のいくつかの回答がプライベートCAによって署名された証明書を参照していることです。これはわずかに異なる問題です。しかし、それほど大きな違いはないので、実際のところ、これは単なるメモです。
主要な異議は、商業的に署名された証明書が些細な費用以上である限り、そしてこの地球上の多くの人々にとって年間40ドルは些細な費用ではない限り、自己署名証明書が果たすべき大きな役割を持っていると思うことですインターネットセキュリティでは、制限が認識されている場合に限ります。
自己署名証明書は、私のknown_hosts
ファイルのsshキーのようなものです。独立した検証がなければ、私が信じているシステムと話していることを保証できません。しかし、今話しているシステムは、前回会話をしたと思ったときと同じシステムであることを保証できます。私たちは常にsshキーをキャッシュしますが、自分のknown_hosts
ファイル内の公開キーのほんの一部以上を独自に検証したシステム管理者に会ったことはありません。
自己署名証明書(さらに言えば、一般的に有効でないCAによって署名された証明書)は、SSLを検証しない限り、サーバーへの通信のみをセキュリティで保護することを人々が認識している限り、SSLをまったく使用しないよりもはるかに優れていますDNSレコードのもう一方の端、および現在回線にいる中間者。証明書を個別に検証する場合、認証と暗号化は、少なくとも認証されたCAによって署名された証明書によって提供されるものと同じくらい強力です。
1-と専用のインターネットセキュリティ万能薬のような問題についてハード考える必要があるかもしれませんとして認識CAによって署名された証明書の使用を提示したい。また、これらの標準のMozillaバンドルの中国政府の署名CAを含めること、およびComodoによって署名された不正なSSL証明書。
known_hosts
、@ MadHatterが参照しているという手掛かりもありません。
ユーザーにCA証明書がインストールされていない外部サイトの場合(最も一般的なケースです)、はい、自己署名証明書は誤ったセキュリティを提供するため、役に立たないよりも悪いです:
まず、CA証明書が事前にインストールされていない場合、ユーザーが証明書が攻撃者からではなく実際にあなたからのものであることをどのように確認しますか?もちろん、証明書フィールド(CN、指紋など)を照合することにより-しかし、何に対してですか?そのため、証明書を検証するためにサイドチャネルが必要になります-いくつかの例では、サポートラインオペレーター(検証用のサイドチャネルとして機能するはずだった)は、それが何を意味するのかわかりません。また、そのようなサイドチャネルの操作は、信頼できるCA署名付き証明書を取得するよりも桁違いに高価なので、ユーザーは盲目的にあなたを信頼する必要があります。
第二に、ユーザーが受け取る恐ろしいアラートは、正当な理由で怖いです。ユーザーは提示された証明書を検証できない/検証できないため、Elbonian Haxx0r D00dzにデータを安全に送信している可能性があります。
第三に、そして最悪なことに、あなたはユーザーを鈍感にしている。「彼らは私にhttps://mysite.example.com/の警告を無視するべきだと言った。そして金床が頭に落ちなかった。金魚も死にませんでした; sooooo、それは実際の意味のない単なる別の警告ボックスであるため、このボックスに遭遇するたびに無視することができます。
言い換えると、保護レベルはプレーンHTTPに匹敵します(オンザワイヤスニッフィングを除く:データは転送中に暗号化されますが、これはエンドポイント検証のないかなり貧弱な機能です)が、保護感は不当に高いです。悪い車のアナロジー:「私はABSを持っているので、悪い状態でも安全に運転できるようになりました」-ABSは車の販売パンフレットにしか存在せず、実際に車にいることはありません。
推奨読書:OWASP SSLベストプラクティス
TL; DR:一般向けのサイトで自己署名証明書を使用することで、一度に1人の無知なユーザーが、ネットをより悪い場所にしています。
依存します。あなたがそれがあなたをより安全にすると思うなら、それはあなたがあなたの誤った安心感でより危険なことをすることを選ぶのであなたのリスクを増加させます。機能的にHTTPと同等に扱うなら、もう少し安全だと思います。
SSL / HTTPSを使用しない場合、ネットワーク上のWiresharkを使用するユーザー(またはログインするユーザーのローカルネットワーク)は、プレーンテキストとして送信されたユーザー名/パスワードを簡単にリッスンしてキャプチャできます。
自己署名SSLでは、単純に傍受することはできませんが、サイトを偽造し、DNSを変更してman it the middle(MITM)攻撃を行う可能性があります。これは依然として脅威ですが、彼らが達成することはかなり困難です。
自己署名SSLを使用することに関する他の問題は、多くのブラウザが自己署名証明書を主要なセキュリティ脅威として扱い、巨大な赤いページで入力する前に警告することです(たとえば、クロム)。 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サイトでそれを行うことはできません。そのため、さまざまな動作が危険にさらされますが、これは安全ではありません。