web-dev-qa-db-ja.com

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

安全な接続をしたいのですが、ウェブメールにログインするとき、 phpMyAdmin などです。

したがって、私はOpenSSLで自分のSSL証明書に署名し、ポート443でリッスンするようApacheに指示しました。

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

34
cherrun

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

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

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

41
monoceres

これは信頼のすべてです。

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

この場合、「信頼できる人」は、証明書の提出者のIDを確立するために(できれば)レッグワークを行った認証局の1人です。

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

独自の証明書に署名する場合、信頼チェーンはありません。あなたのサイトはあなたにあなた自身の証明書を提示しています。 あなたが信頼する証明書としてブラウザに独自の証明書をインストールする場合、それは以前に来たものと同じように認証局として扱われますインストールされています。次に、リンクが1つだけの信頼チェーンがあります。

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

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

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

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

14
SmallClanger

実際、自己署名証明書は安全です。これは、現在使用しているモデルではありません。


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

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

もちろん、 CAが危険にさらされている または 所有者を正しく確認していない の場合、すべての賭けは無効になります。


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

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

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


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

11
BlueRaja

信頼のすべてではありません...

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

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

それがMYサーバーの場合、自分からの自己署名証明書を使用しても問題はありませんが、だれかがなりすまして自分のサーバーではなく自分のサーバーに接続する危険性があります。私と私のサーバーについて誰も気にしておらず、ここにはほとんど価値がないので、これについてあまりリスクを感じていません。

一方、もし私のサーバーではなくあなたのサーバーだったら、私は気になるでしょう。

2
uSlackr