私はOpenSSL
ツールの初心者です。いくつかの概念がわかりません。これらの概念を私に説明してもらえますか?CA
などの概念や、理解を深めるための概念を理解したいSelf-Signed Certificate
。
(間違った用語や文法を使用している場合は申し訳ありませんが、私は英語を学んでいます。)
私はOpenSSL
ツールの初心者です。いくつかの概念がわかりません。これらの概念を私に説明してもらえますか?CA
などの概念や、理解を深めるための概念を理解したいSelf-Signed Certificate
。
(間違った用語や文法を使用している場合は申し訳ありませんが、私は英語を学んでいます。)
証明書の目的は、検証できる方法で情報を表明することです。公開鍵証明書、より具体的にはこのコンテキストでのX.509証明書は、公開鍵、識別子(サブジェクト識別名および/またはサブジェクト代替名)、およびその他のさまざまな属性間のバインディングをアサートします。全体として、これらの情報は証明書を形成するために署名されています。
X.509証明書には、発行者とサブジェクトの両方があります。件名は、その証明書が誰または何を識別するか(およびこの証明書内の公開鍵と一致する秘密鍵を誰または何が所有するか)を表す識別子です。発行者は、秘密鍵を使用してこの証明書に署名した個人または組織の識別子を表します。
証明書の使用法は、特定のアプリケーションまたはサービス(SSL / TLSサーバーの認証など)に使用される証明書と、他の証明書の有効性を証明するために使用される証明書の2つの異なるカテゴリに大きく分けることができます。
後者の場合、証明書は公開鍵インフラストラクチャ(PKI)の構成要素として使用されます。認証局(CA)は、証明書を発行する機関です。証明書の公開鍵をサブジェクトにバインドするアサーションに署名します。その際、発行する証明書に発行者名として独自の名前を付けます。
証明書をパスポート(写真と名前を結び付ける)と比較すると、CAがパスポートの権限になります。つまり、パスポートの内容が真実であることを実際に証明する人が、他の人がそれを確認できるようにします。
CAを信頼すると、CAが発行した証明書を信頼できます。信頼するCAと、これまでに見たことのないこのCAによって発行された証明書との間に信頼の鎖を構築できます。
これに伴い、「ブートストラップ」の問題が発生します。CA自体をどのように信頼しますか?
自己署名証明書は、発行者とサブジェクトが同一である証明書です。それらは、含まれている公開鍵と一致する秘密鍵で署名されています。彼らは信頼の鎖の最上位にいます。それらはCA証明書である傾向があります(外部検証なしでは信頼できない特定のサービス用に特注されていない限り)。
CA証明書は、他の証明書の発行/検証に使用できる証明書です。(ルート/自己署名CA証明書と検証する証明書の間のチェーンの中間にある場合は、中間CA証明書にすることができます。)証明書を使用して他の証明書を検証する方法を定義するルールは、PKIX仕様(RFC 3280/5280)。
ブラウザとオペレーティングシステムには、デフォルトで信頼できるCA証明書のリストがプリインストールされています。これらは主に、証明書内のサービスに関する情報を確認する商用CAであり、多くの場合、有料です。カウンターパートでは、発行する証明書の内容を信頼できます(ほとんどの場合、完全なシステムではありません)。ブラウザ/OSが信頼できるCA証明書のみを含んでいることを信頼する必要があるため、ここには「信頼の飛躍」が含まれます。
を使用openssl s_client
して「チェーン内の自己署名証明書」や「証明書を検証できません」などのメッセージが表示された場合、それは必ずしも何かが間違っていることを意味するわけではありませopenssl
んが、信頼できるCAの事前定義されたリストを使用していませんデフォルトでは証明書。そのコマンドのほとんどには、-CAfile
またはのようなオプションがCApath
あり、信頼できるCA証明書を指定できます。
サービスの自己署名証明書は特定のケースであり、サービスはそのコンテンツを自己主張します。証明書を信頼する外部の方法がない限り、通常、そのような証明書の信頼性を検証する方法はありません(たとえば、自分でマシンにインストールして内容を手動で変更した場合、または信頼できる人が証明書を提供した場合)。あなたへ)。
( HTTPSサーバー証明書の使用方法に関するこの質問にも興味があるかもしれません。)
一般に、証明書の目的は、信頼の連鎖を確立することです。「私はこのサードパーティ企業を信頼しています。彼らはあなたを信頼しているので、私はあなたを信頼できます。」自己署名証明書は、あなたが自分で作成したことを意味します。したがって、私はあなたを本当に信頼していません。(これらはテストには最適ですが、他にはあまりありません。)もう1つのタイプは、信頼できる証明書であり、評判の良い会社に販売してもらうことで取得されます(Verisignなど)。それは商品市場なので、価格は企業間でかなり一貫しています。使用目的と証明書の範囲によって異なります。(たとえば、Androidアプリに署名するための証明書は、 https://www.example.com/の検証に使用される証明書とは大きく異なります。)
「CA」または認証局は、証明書を発行した会社です。信頼できる証明書の場合、それはその会社です-たとえばVerisign。自己署名証明書の場合、CAはあなたです-あなたは証明書を発行しました。
自己署名証明書は、ほとんどのブラウザである種の「信頼できない」アラートを発生させ、続行して例外を追加するかどうかを尋ねます。これは、接続の安全性が低下することを意味するものではありません。SSL経由のままです。
通常、CAは料金を請求しますが、検索すると無料のものがいくつかあります。