web-dev-qa-db-ja.com

ローカルで生成できるSSL証明書を購入する必要があるのはなぜですか?

OpenSSLを使用してローカルで生成できるSSL証明書を購入する必要がある理由を理解できません。購入した証明書とローカルで生成したテスト証明書の違いは何ですか?単なる大きな詐欺ですか?

57
S-K'

一言-信頼。ブラウザが信頼するプロバイダーからのSSL証明書は、プロバイダーが、あなたが本人であることを証明するために少なくとも基本的な検証を行っていることを意味します。

それ以外の場合は、google.comまたはyourbank.com用に独自の証明書を作成し、それらのふりをすることができます。

有料の証明書は、(通常)自己署名の暗号化のレベルを追加しません。ただし、自己署名証明書を使用すると、ブラウザでエラーがスローされます。

SSLの一部は詐欺です (verisign証明書とgeotrustの比較では、verisignの価格が100倍も高くなります)すべてではありません。

これがすべて内部的なものである場合は、独自の信頼方法を使用できるため、有料の証明書は必要ありません(たとえば、何もしない、またはおそらく指紋チェックのみ)。

72
Mark Henderson

SSL証明書の要点は、ブラウザがHTTPSトランザクションのサーバーの公開鍵をある程度信頼できるようにすることです。

まず、証明書を使用しなかった場合どうなるかを見てみましょう。代わりに、サーバーは公開キーをプレーンテキストで送信し、ブラウザはそれを使用して暗号化通信を開始します(最初に行うことは、独自の公開キーを暗号化して安全に送信することです)。私と攻撃者が自分を途中で押し込んだ場合はどうなりますか?オンザフライで自分の公開鍵を自分のものに置き換え、ブラウザとの暗号化接続を確立し、受け取ったすべてのものを復号化し、公開鍵で暗号化して送信します(応答タイプのトラフィックの場合はその逆)。誰もが公開鍵を事前に知っていなかったため、違いに気付くことはありません。

OK、それで私たちはブラウザが私の公開鍵を信頼する何らかの方法が必要であることを確立しました。これを行う1つの方法は、すべての登録済み公開鍵をブラウザーに保管することです。もちろん、これは誰かが公開鍵を登録するたびに更新を必要とし、これは肥大化につながります。 DNSサーバーの手に公開鍵を保管することもできます。1ただし、DNSサーバーも偽装される可能性があり、DNSは安全なプロトコルではありません。

したがって、残された唯一のオプションは、署名メカニズムを通じて信頼を「チェーン」することです。ブラウザーはいくつかのCAの詳細を保存し、証明書は他の証明書のチェーンと一緒に送信されます。各証明書は次の証明書に署名し、ルート/信頼済み/組み込みのCAに送信されます。証明書に署名する前に、ドメインが自分のものであることを確認するのがCAの仕事です。

CAであることはビジネスであるため、彼らはこれを請求します。他よりもいくつか。


独自の証明書を作成した場合、次のようなエラーが表示されます。

enter link description here

署名されていない証明書には価値がありません。それは、鉛筆と小冊子、つまりあなたがバラックオバマであると主張するパスポートを描くようなものです。誰もそれを信頼しません。

1.結局のところ、ドメインを登録するとDNSエントリが作成されます。公開鍵を同時に登録できる、より堅牢なプロトコルを使用することは、興味深い概念です。

23
Manishearth

質問への回答は対象者によって異なります。証明書のシステム全体は「信頼」に基づいているため、ユーザーは自分で証明書を証明するか、このチェックを行って署名して成功を示したサードパーティを信頼できる必要があります。あなたの証明書。私が使用した「証明書を証明する」という用語は少し不正確です。長いバージョンは、「証明書の所有者であり、証明書の使用が許可されていることを証明する」である必要があります。

すべてのユーザーがあなたを個人的に知っていて、証明書が自分で発行されたことを証明する技術的能力を持っている場合、「認定された」プロバイダーの証明書を使用する技術的な必要はありません。この場合、自己署名証明書は、いずれかのプロバイダーの証明書よりも優れている場合があります。

しかし、ほとんどの場合、ユーザーが自分でこのプロセスを実行する可能性はありません。ここで、それらのSSLプロバイダーが市場に登場します。彼らはこれらのチェックを行うサービスを提供し、証明書に署名することによりチェックの結果を表現します。ただし、SSLプロバイダーは、証明書に署名することにより、独自の署名ポリシーに従って証明書発行者のIDをチェックしたことを表明します。したがって、ユーザーは、このポリシーが十分正確であるかどうか、およびプロバイダーを信頼できるかどうかを判断する必要があります。

5
mschenk74

重要な点は、証明書が自己生成である場合、一般的なユーザーはその真実性を検証する方法がないということです。購入した証明書については、少なくとも証明書内に印刷されているものが正しいことを確認することを想定しています。アイデア:電話と住所を証明書に入れた場合、CAはそれを検証すると仮定しますが、実際にはそうしません。

さらに、購入証明書は追跡可能です。つまり、ユーザーはいつでも証明書の発行元を追跡できますが、自己署名証明書はランダムなIDにすぎません。

多くのシステムにとって、以前は認証されたCAからの "コード署名"が必要でしたが、これはポリシー主導ですが、自己署名証明書は非常に多いため、現在は100%強制されていません。

4
user170531

技術的な違いはありません(独自のものは安全性が低いわけではありません)組織的なものだけです。CAの証明書は、ブラウザーの標準インストールの一部ではありません。これにより、ほとんどの人が証明書に接続するのが不快になります。しかし、内部ネットワーク用の証明書を購入しても意味がありません。

4
Hauke Laging

最近 LetsEncrypt は、有効な証明書を生成するためのコマンドラインツールの提供を発表しました。

検証メール、複雑な設定の編集、期限切れの証明書によるWebサイトの破壊はありません。そしてもちろん、Let’s Encryptは無料で証明書を提供するため、支払いを手配する必要はありません。

これらの証明書が主要なブラウザで有効かどうか疑問に思う人にとっては、答えは「はい」です。

2015年10月19日、中間証明書がIdenTrustによって相互署名され、Let's Encryptによって発行されたすべての証明書がすべての主要なブラウザーによって信頼されるようになりました。[20]

..... 2016年3月8日、Let's Encryptは7か月の存続期間を経て100万番目の証明書を発行しました。[39]

2016年4月12日、Let's Encryptがベータ版を終了しました。

システム管理者と開発者向けのリンク: https://letsencrypt.org/getting-started/

ブロックチェーン技術とサードパーティの信頼システムの廃止の時代に、選ばれたいくつかの当局による高価な証明書の発行が疑問視され始めた頃です。

Letsencryptはブロックチェーン技術とは何の関係もありませんが、正しい方向への出発点です。高価な認証局に毎年高額の料金を支払う必要性は、論理的に終わろうとしています。

3
surfbuds

それは信頼に帰着します。 「認証された」SSLプロバイダーは、サーバー自体からの自己署名証明書に対して、信頼できる(これは操作可能ですが)と思われます。

組織に独自の証明書署名がある場合、これは完全に受け入れ可能であり、ユーザーに警告を出さないはずです(証明書のキーチェーンを信頼できるソースとして使用している場合)。ただし、外部で使用しようとすると警告が表示されます。

結論:内部で使用する場合は問題ありません。有料の顧客に外部から提供する場合は、警告がないので安心です。認定された情報源を介して金融取引を行う方が安全だと感じますか、それとも本当に知らない通りに立っている人がいますか?

3
szukalski

簡単に言えば、自己署名SSL証明書は何も意味しません。それは外の世界には何の価値もありません。 「私はスペインを所有しています」と言っているようなものです。あなたは正直にそう思うかもしれませんが、誰もあなたの主張を認めません。

同様の類推は、何かを発明してから、あなたがその発明の権利を所有していると主張することですが、特許庁で特許を登録しない限り、あなたの言葉をそれに採用するのは難しいでしょう。


証明書の要点は、人々が信頼する機関によって署名されていることです。一部のWebサイトに有効なSSL証明書がある場合は、所有者がWebサイトの登録、SSL証明書の支払い、および実際の認証局からの公式証明書の取得に苦労しているため、安価なフィッシングWebサイトではない可能性があります。一方、自己署名証明書を信頼している場合、フィッシングWebサイトは、自分の偽造した証明書(喜んで受け入れる)を生成し、出来上がります。

もちろん、これがプライベートイントラネットの内部ネットワークである場合は、おそらく相互にすでに信頼しているので、この場合、信頼できる証明書は実際には何も追加しないので、ブラウザーが投げる明るい赤色の信号を無視しても安全です。 。まだクライアントサーバートラフィックを暗号化したいが、脅威モデルが強力な認証を保証していない小規模なWebサイトについても同じです。この場合、自己署名証明書で問題がなく、(脅威モデルでは無視できます) MITMのリスク。

これは、信頼できるSSL証明書がどれほど高価になる可能性があるかを考えると、おそらく十分です。


言い換えると、自己署名証明書は、「私が私であることを証明します信頼してください!」.

2
Thomas

それを短くてシンプルに保つために...そして言われたことを少し紛らわしくするために...

これは暗号化の問題ではありません。適切なツールを使用して、必要な暗号化の種類でローカルに証明書を生成し、有効な証明書を取得できます。

証明機関から証明書を購入するときの主な利点は、証明書が有効な期間中、証明書がサーバーで保持されていることです。

デジタル製品を証明書で検証および検証するために、PCを接続する必要はありません。検証を認証機関にリダイレクトする必要があります。

1
ZEE

このディスカッションで遅くなって申し訳ありません。opensslを使用すると、独自のルート証明書を使用してプライベートCAを設定し、このCAによって署名されたサーバー証明書を作成できることを指摘する価値があると思いました。 CAルート証明書がブラウザーにインポートされ、ブラウザーがそれを受け入れるように指示されている場合、サーバー証明書はコメントなしで受け入れられます。 (明らかに、これはユーザーコミュニティが小さく、ユーザー全員が個人的にお互いを知っている場合にのみ実行可能なオプションです。)

1
pd9370