web-dev-qa-db-ja.com

自己署名証明書-仕組み

SSL /デジタル証明書/署名は初めてです。
私が知っていることは、デジタル署名は公開鍵を使用して検証/復号化する必要があるということです。

したがって、CAによって署名された証明書は、ほとんどのブラウザーにインストールされているCAの公開鍵を使用して検証/復号化する必要があります。


  1. しかし、自己署名証明書はどうでしょうか?クライアントはどのようにして公開鍵を取得して自己署名証明書を検証/復号化しますか?

    これは、証明書が信頼できないソースからのものであり、クライアントにそれを信頼するように要求することをブラウザが要求するシナリオですか?

    信頼するということは、証明書のデジタル署名が検証されなくなったことを意味しますか?そして、その証明書は直接使用されますか?


  1. http://webdesign.about.com/od/ssl/ht/new_selfsigned.htm

    上記のリンクでは、「サーバーキー」は秘密キーですか、公開キーですか?証明書の生成全体を通じて「サーバーキー」が使用されているようです。

    「公開鍵」は証明書に格納され、証明書は秘密鍵で署名されると思いました。

4
Noob

自己署名証明書を理解するには、最初に認証局(CA)の役割を理解する必要があります。 Webサーバーとブラウザーのコンテキストで説明します。

HTTPSにおける認証局(CA)の役割:

HTTPSは、キーペアを使用してコンテンツを暗号化および復号化する公開キー暗号化を採用しています。鍵ペアは、数学的に関連する1つの公開鍵と1つの秘密鍵で構成されます。ブラウザと安全に通信することを意図しているウェブサーバーは、公開鍵を配布できますが、秘密鍵は秘密にしておく必要があります。

ここで問題は、暗号化に使用されたWebサーバーのキーが実際にWebサーバーに属していたことをブラウザーが確実に知ることができないことです。 Webサーバーとブラウザの間の通信チャネルを監視している別の当事者が別のキーに置き換えた可能性があります。認証局(CA)の概念は、この問題に対処するために進化しました。認証局(CA)は、公開鍵の完全性と所有権を確立する信頼できる第三者機関です。 CAは、秘密鍵を使用して証明書(Webサーバーの公開鍵)に署名することでそれを行います。ブラウザーは既知のCAの公開鍵を組み込み、これらを使用して証明書を検証します。

自己署名証明書:

自己署名証明書の場合、Webサーバーは、サードパーティのCAによって署名されるのではなく、独自の証明書に署名します。つまり、ウェブサーバー自体が自身のCAとして機能します。 OpenSSLを使用して、自己署名証明書を生成できます。

自己署名証明書の場合、ブラウザー(Chromeなど)は証明書を検証できないため、不満が出ます。この問題を解決するには、自己署名CAの証明書をブラウザーにインストールします。

参照:

ウィキペディア

Microsoft MSDN

2
Razan Paul

1)

  • 自己署名証明書は、鍵を使用して自身に署名します。関与するCAはなく、確認するものはありません。証明書は基本的に、それがキーと一致することを確認しますが、それ以上は確認しないため、実際の確認の目的は果たしません。

  • ブラウザーが自己署名証明書の警告をポップアップします。これは、キーが誰にも認証されていないことを意味します。これは、クライアントが慣れていないCAによってある認定されているキーとは異なります(信頼されていないCA)。クライアントには、不明なCAを手動で信頼するオプションがあります。

2)

ここでは、公開鍵と秘密鍵は使用せず、鍵とその証明書(鍵の署名とメタデータ)のみを使用します。問題の鍵は秘密鍵です。秘密にしてください。

プライベートキーから生成されたシークレットを証明書(認証局からの署名とメタデータ)とともにユーザーに提供します。証明書はキーから生成されたシークレットと一致し、キー名、所有者、有効性、およびその他のメタデータ。

ただし、証明書は誰でも作成できた可能性があるため(キーと一致する必要があるだけです)、マスター証明書(証明書であることを証明する証明書)によって署名されている場合にのみ、クライアントは証明書を信頼しますは信頼できます)、または証明書のチェーンによるもので、上位の署名者がクライアントによって信頼され、署名チェーン全体のすべての署名が有効である必要があります。

上位の証明書は、クライアント(ブラウザまたは一般的に信頼されたセキュリティ証明書データベース)に組み込まれている場合と、ユーザーがインポートして受け入れる場合があります。自家製だが信頼できるトップ証明書(CA)は、その自家製CAを信頼するすべてのクライアントで検証するが、他のクライアントでは検証しない鍵に署名する場合があります。

2
grin

Q1公開Webサイトの場合、最も安全な方法は、信頼できるCAからの証明書を使用することです。ただし、多くのシナリオでは、自己署名証明書を使用して、Webサイトとの「安全な」接続を取得できます。ブラウザーはSSCをまったく信頼できませんが、ユーザーが信頼できない、危険なサイトである可能性についてユーザーを防ぐために、恐ろしい警告を発します。

Q2サーバーキーは秘密であり、非同期暗号化の重要な部分であり、証明書への署名、または非同期暗号化の公開部分にも使用されます。どちらもサーバーファイルシステムに格納されますが、クライアント/ブラウザがデータを暗号化/復号化するために知っている公開部分のみです。

Depperが必要な場合は、Ivan Ristic OpenSSL Cook Book を確認してください。

1
jpdrummer