web-dev-qa-db-ja.com

自己署名証明書が信頼されていないのはなぜですか?それらを信頼させる方法はありますか?

ローカルでルートCA証明書を作成しました。 CA証明書を使用してIA証明書に署名し、IA証明書を使用してサーバー証明書に署名しました。サーバー証明書を使用するローカルサーバーにアクセスしようとすると、セキュリティリスクの警告が表示されます。警告を出さないようにする方法はありますか?

基本的に知りたいのは、自己署名証明書を信頼できるようにすることは可能ですか?

42
Praz

ブラウザの信頼ストアにルート証明書をインポートする必要があります。ブラウザがこのルート証明書を信頼していることを認識すると、これによって署名されたすべての証明書が信頼済みとして表示されます。

これにより、接続が信頼できるものになることに注意してください。ルート証明書がインストールされていない他のユーザーは引き続きエラーを受け取ります。

52
BadSkillz

証明書自体は信頼を形成しないため、自己署名証明書はブラウザによって本質的に信頼されません。信頼は、誰もが信頼する認証局によって署名されたものです。ブラウザは、自己署名証明書をルート証明書であるかのように信頼しません。ブラウザーが証明書を受け入れるようにするには、ブラウザーの構成に移動し、証明書をルート証明書として追加します。

自己署名証明書を信頼できるものにする最良の方法は、 Key Ceremony を実行することです。これは基本的に、すべての暗号化者とセキュリティ専門家が集まり、ルートCAが鍵を生成するのを目撃するために集まる大きな公開イベントです。ペアになり、ルートCAを宣言します。すべてが記録されます:ビデオ、誰が誰であるか、誰が弁護士によって何をするか。秘密鍵は多くの異なる部分に分割され、通常は他の証明書に署名するための仲介者として使用される単一の証明書に署名した後、金庫に別々に保存されます。必要に応じて 典型的な手順 について読むことができます。もちろん、これを行うには、技術的にも物理的にも最先端のセキュリティが必要であり、ルートCAを使用または信頼したい人がいる必要があります。これを行った後、証明書はブラウザの配布に含まれ、一般の人々が証明書の信頼チェーンを作成するために使用できます。

38
sethmlarson

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


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

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

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


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

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

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


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

より短い答え。

ここには多くの答えがありますが、いずれも真っ直ぐに進んでいるようには見えません。認証局などの中立で認められた第三者が証明書の所有権を検証しない限り、証明書は無意味です。

より長い答え。

よりよく理解するために、HTTPS接続の作成などを行う場合、次のチェーンがあります。

  • サーバーにリクエストを送信するクライアントWebブラウザー。
  • クライアントにデータを送り返すリモートWebサーバー。
  • そして、中立のサードパーティによって承認されたHTTPS証明書は、サーバーが誰であり、暗号化が有効であることを保証します。

誰でも自己署名証明書を生成できるであるため、自己署名証明書は本質的に信頼されていません。 意図的にふりをするであるエンティティ/それ以外のエンティティを含むすべての人。自己署名証明書を使用すると、基本的な人間の手順が単に「次のように設定されている信頼できるサードパーティは存在しません。このドメインには、私たちが発行した証明書があり、信頼できます。実際には、彼らが主張するドメインであり、詐欺師ではない」

また、世界中の誰でも自分で自己署名証明書を作成できるため、その使用には固有の信頼問題があります。証明書を有効にするものには高度なテクノロジーや暗号化技術とはほとんど関係ありませんですが、証明書を有効にするのは中立的で認識されているサードパーティを中心としたプロセスです使用手順およびそれらの手順を尊重するブラウザメーカー。

結局のところ、暗号化キーのペアは、それらを取り巻くプロセスと手順を強制しない限り、まったく意味のないビットとバイトの山です。

8
JakeGould

自己署名証明書は誰でも作成できるため、信頼できません。

MITM攻撃 を実行する攻撃者は、HTTPSを使用している場合でも、証明書を自己署名証明書に簡単に置き換え、閲覧しているWebサイトになりすますことができます。

そのため、信頼できる認証局を使用して、証明書が改ざんされないようにしています。

3
Benoit Esnard

少しコンテキストが必要です。

「信頼できない」と「安全」には違いがあります。

また、「信頼できる」とは、必ずしもセキュア(またはオーセンティック)を意味するものではありません。

サーバーとクライアントが1つしかない分離されたネットワーク上の自己署名証明書は、「信頼できる」証明書よりもおそらく安全です。

また、「信頼できる」とは、認証局の証明書がクライアントの「信頼できる証明書ストア」に追加されていることのみを意味します。 「フィッシング」セッション中に認証局の証明書が追加された場合、その証明書は安全ではありません。

私は、何百もの「信頼された」認証局が「他者」によってクライアントに配置されることが多いので、私はファンではありませんが、より良いアプローチを知りません。

確かに、認証局は、証明書を発行する前に、現在行っているよりも(一般的に)より良い「審査」プロセスを実行する必要があります。

3
jwilleke

信頼されるためには、どのアプリケーションにも「ルート証明書」のリストを与える必要があります。

ブラウザーの場合、デフォルトでブラウザーに付属する定義済みリストがありますが、このリストには証明書が含まれていません。

信頼できる証明書のリストを実際に提供する必要がないと想像してみてください。そうすれば、世界中のブラウザがセキュリティリスクの警告なしに受け入れるhttps Webサイトをだれでも設定できます。

一方、CA証明書自体がデフォルトの信頼できる証明書のいずれかによって署名されている場合は、そのまま使用できますが、料金を支払う必要があります。

信頼できるリストにCA証明書を追加する方法については十分な回答があるので、この部分はスキップします。

2
Gryzorz

ブラウザーで実行する場合の手順は次のとおりです。

Chrome 58+の場合:-設定->詳細設定の表示->証明書の管理->インポート->参照->信頼されたルート証明機関を選択->ポップアップで[はい]をクリックします。

0
Dio Phung