自己署名SSL証明書は安全ですか?


33

ウェブメールやphpMyAdminなどにログインするとき、安全な接続が必要です。

そのため、OpenSSLで独自のSSL証明書に署名し、ポート443でリッスンするようApacheに指示しました。

これは実際に安全ですか?私のすべてのパスワードは本当に安全でセキュアなレイヤーを介して送信されますか?VerisignからSSL証明書を購入するか、自分の証明書に署名すると、どのような違いが生じますか?結局、すべてのデータは私のサーバーに保存されます。それで、大きな違いは何ですか?

回答:


40

これはすべて信頼です。verisignから署名付き証明書を取得すると、証明書が信頼できることをランダムなクライアントに証明します。証明書に自己署名すると、証明書がコンピューターにインストールされていない人は、中間者攻撃の攻撃を受けていないことを確認できません。

Webサーバーを使用するだけの場合、証明書に署名するために実際のCA(verisignなど)は必要ありません。使用したいマシンに証明書をインストールするだけで準備完了です。

編集:だからあなたの質問に答えるために:はい、すべてが暗号化されており、Webブラウザーに提示された証明書が実際にWebサーバーをセットアップしたものであることがわかっている場合、誰も機密データを読み取れないことを確信できます。


12
CAの目的は、証明書が属していると言う人のものであることを他の人に証明することです。証明書が誰のものであるかはすでにわかっているので、自分のサーバーにアクセスして自分の証明書を提示するという点では、CAは何の役にも立ちません。ただし、信頼する証明書を知る方法がないため、他のユーザーはサーバーに安全にアクセスできません。(あなたが知っている-あなたが発行したものを信頼してください。)
デビッドシュワルツ

また、証明書を確認するために直接連絡できる限られた数のユーザー(家族のメンバー、または小さな会社のスタッフなど)がサーバーにアクセスする場合、これは合理的なアプローチです。
-bgvaughan

CAと連携している中間者は、自己署名証明書をオーバーライドできますか?たとえば、ボブはアリスの自己署名Webサイトに接続し、スカーはボブにCAによって署名された別の証明書を送信しますスカーは調整され、ボブのブラウザーはSSL警告を表示しません。これは可能ですか?
ハローワールド14

14

これはすべて信頼です。

証明書を提示する人気のあるWebサイトにアクセスするとします。これは、「これは私です。あなたは私を信頼することができますあなたが信頼する誰かがこの紹介状に署名しているからです」と言っているウェブサイトです

この場合、「あなたが信頼する人」は、あなたの代わりに証明書のプレゼンターの身元を確立する上で(うまくいけば)足掛かりをした証明書機関の1人です。

本当に信頼しているのは、証明書を提示する人の身元に対する認証局の信頼に対するブラウザの作成者の信頼です。多くの場合、あなたとプレゼンターの間には複数の権限があるため、「信頼チェーン」という用語が使用されます。[1]

独自の証明書に署名するとき、信頼チェーンはありません。サイトは独自の証明書を提示しています。あなたがその一つとして、ブラウザで独自の証明書をインストールする場合は、あなたが信頼し、その後、権威として扱われている、プリインストールされていたものと同じ。これで、リンクが1つだけの信頼チェーンが作成されます。

その後、自分のサイトにアクセスし、信頼できない証明書を提示していることをブラウザが警告した場合、信頼できない証明書を提示する他のサイトと同様に、あなたは確信が持てないため、心配する必要があります実際のサイトと通信していること。

暗号化についてはまだ言及していないことに注意してください。証明書とは、通信相手の身元認証することです。信頼できる証明書を通じて、あなたの店や銀行が本物であることを合理的に保証する方法があります。アイデンティティを確立したら、次のステップはコミュニケーションを保護することです。証明書には、このセキュリティを促進するために必要なキーも含まれています。SSLが正しく設定されていれば、この通信はショップや銀行と同じくらい安全であり、パスワードも同様に保護されます。[2]

[1]これは決して完璧なシステムではありません。自由市場と低マージンで大量のビジネスは必然的にコスト削減につながりますhttp : //www.theregister.co.uk/2011/04/11/state_of_ssl_analysis/

[2]少なくとも、誰かがあなたの家に侵入して、あなたの秘密を破ろうとするよりも、あなたの秘密を打ち破る方がはるかに安いように十分に保護されています:http : //xkcd.com/538/


11

実際、自己署名証明書、現在使用しているモデルではなく、安全である可能性があります。


誰もが現在使用している広範なCA(認証機関)モデルでは、信頼できるCAによって署名される証明書の目的は、認証を提供することです。

証明書を取得すると、実際に見えるのは壁のジャックから1と0が入ってくることだけです。これらの1と0がどこから来たのかわかりません。ただし、証明書はCAによって署名されているため(そのCA以外の誰もできないことです)、CAが証明書の所有者の身元を確認することを信頼しているため、証明書はそれが主張する人からのものであると信頼していますに。

もちろん、CAが侵害されたり、所有者を正しく検証しない場合、すべての賭けは無効になります。


ただし、自己署名証明書真正性を提供する別のモデルがあります。公証人モデルと呼ばれます。

基本的に、単一のCAを信頼するのではなく、任意の数の公証人に信頼を配布します。これらの公証人は、証明書を探してインターネットを探し回って、見たすべての証明書のキャッシュを保持します。初めてサイトにアクセスして証明書を取得するとき、多くのグローバルに配布された公証人に最後に見た証明書を尋ねます。彼らがあなたが見ているものに同意しない場合、あなたは中間者攻撃の一部である可能性があります。

このモデルでは、公証人が証明書を表示する前にサーバーがすぐに侵害されないと仮定する限り、自己署名証明書は完全に安全です。


公証人モデルはまだ初期段階であり、CAモデルを実際に引き継ぐことは疑わしい(実際には、必要はありません-それらは並行して使用できます)。これまでで最も有望なプロジェクトは、Firefox用のプラグインを持つConvergence.ioです。


2

信頼だけではありません。

SSL証明書には2つの目的があります。1)接続先のWebサーバーです。2)通信を暗号化します。

あなたが達成したものは、#1なしで#2を持つことができます。残っているのは、接続しているボックスが目的のものであることの確認です。

それが私のサーバーである場合、自分から自己署名証明書を使用しても問題はありません-誰かが私のものではなくサーバーに接続するために物事を偽造する可能性がありますが。誰も私と私のサーバーを気にしませんし、私はここでほとんど価値がありませんので、これにはあまり大きなリスクはありません。

一方、私のサーバーの代わりにそれがあなたのサーバーであるなら、私は心配するでしょう。


「それがあなたのサーバーであれば、私は心配しません」と言うつもりでしたか?
cherrun

いいえ、彼は「それが私のサーバーである場合、私は問題がない...それがあなたのサーバーである場合、私は問題がある」と述べた。
フランチェスコ

あなたは間違っています。あなたの代わりにあなたが彼らのサーバーに接続するようにだれも物をだますことができませんでした。彼らはあなたが発行した自己署名証明書に対応するキーを持たず、あなたがそれを受け入れないのであなたに別の証明書を提示することはできません。
デビッドシュワルツ

@cherun私のポイントは私を信頼することでした-あなた(または他の誰か)ではありません。自分を信頼できる/すべきです。
-uSlackr

1
-1。暗号化は、ハンドシェイク中にネゴシエートされた対称キーを使用して行われます。もちろん、証明書を使用してリモートパーティの身元を確認します。そうしないと、通信を暗号化するポイントがほとんどありません(MITMの可能性があります)。サーバーと自己署名証明書の場合は、証明書をクライアントに明示的にインポートします。
ブルーノ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.