回答:
証明書には公開鍵が含まれています。
証明書には、公開キーが含まれるほか、発行者、証明書の使用目的、その他の種類のメタデータなどの追加情報が含まれます。
通常、証明書自体は、CAの秘密キーを使用して認証局(CA)によって署名されます。これにより、証明書の信頼性が検証されます。
A社が持って言うことができます鍵ペアを、公共の使用のための彼の公開鍵(彼のウェブサイト上で別名SSL)を公開する必要があります。
したがって、有効なCAの秘密キーで署名されたA社の公開キーは、A社の証明書と呼ばれます。
例で説明しましょう。
通常のキーペアベースのPKIには、秘密キーと公開キーがあります。
証明書ベースのシステムには、秘密鍵と証明書があります。証明書は公開鍵よりも多くの情報を保持しています。
デモ(証明書と秘密キーを生成できます):http : //www.selfsignedcertificate.com/
秘密鍵ファイルと証明書ファイルをダウンロードして開くことができます。証明書ファイルには、以下に示すような多くの情報が含まれています。
このサイトから生成された証明書(テキストエディターで開く)と秘密キー(テキストエディターで開く)を一致させることができます:https : //www.sslshopper.com/certificate-key-matcher.html
証明書がクライアントの秘密キーと一致する場合、クライアントは確実であり、その証明書はクライアントによって与えられるか、クライアントの信頼できるエージェント(CA)によって与えられます。
ただし、秘密鍵と証明書ベースの通信のみに問題があります。
誰でも独自の証明書と秘密鍵を生成できるため、単純なハンドシェイクでは、サーバーが証明書の公開鍵と一致する秘密鍵を知っていること以外はサーバーについて何も証明しません。この問題を解決する1つの方法は、クライアントが信頼する1つ以上の証明書のセットを持つことです。証明書がセットに含まれていない場合、サーバーは信頼されません。
この単純なアプローチにはいくつかの欠点があります。サーバーは、証明書内の公開キーを新しいものに置き換える、より強力なキー( "キーローテーション")に時間をかけてアップグレードできる必要があります。残念ながら、本質的にサーバー構成の変更により、クライアントアプリを更新する必要があります。これは、サーバーがアプリ開発者の管理下にない場合、たとえばサードパーティのWebサービスの場合など、特に問題になります。このアプローチには、アプリがWebブラウザーやメールアプリなどの任意のサーバーと通信する必要がある場合にも問題があります。
これらの欠点に対処するために、サーバーは通常、認証局(CA)と呼ばれる有名な発行者からの証明書で構成されます。通常、ホストプラットフォーム(クライアント)には、信頼されている有名なCAのリストが含まれています。サーバーと同様に、CAには証明書と秘密キーがあります。サーバーの証明書を発行するとき、CAは秘密鍵を使用してサーバー証明書に署名します。クライアントは、サーバーがプラットフォームに既知のCAによって発行された証明書を持っていることを確認できます。
ただし、いくつかの問題を解決する一方で、CAを使用すると別の問題が発生します。CAは多くのサーバーに対して証明書を発行するため、目的のサーバーと通信していることを確認する何らかの方法が必要です。これに対処するために、CAによって発行された証明書は、gmail.comなどの特定の名前または* .google.comなどのホストのワイルドカードセットでサーバーを識別します。
次の例では、これらの概念をもう少し具体的にします。以下のコマンドラインのスニペットで、opensslツールのs_clientコマンドは、Wikipediaのサーバー証明書情報を調べます。HTTPSのデフォルトであるため、ポート443を指定します。このコマンドは、openssl s_clientの出力をopenssl x509に送信します。opensslx509は、X.509標準に従って証明書に関する情報をフォーマットします。具体的には、コマンドは、サーバー名情報を含むサブジェクトと、CAを識別する発行者を要求します。
$ openssl s_client -connect wikipedia.org:443 | openssl x509 -noout -subject -issuer
subject= /serialNumber=sOrr2rKpMVP70Z6E9BT5reY008SJEdYv/C=US/O=*.wikipedia.org/OU=GT03314600/OU=See www.rapidssl.com/resources/cps (c)11/OU=Domain Control Validated - RapidSSL(R)/CN=*.wikipedia.org
issuer= /C=US/O=GeoTrust, Inc./CN=RapidSSL CA
RapidSSL CAによって* .wikipedia.orgに一致するサーバーに対して証明書が発行されたことがわかります。
ご覧のとおり、CAからサーバーに送信されるこの追加情報により、クライアントはサーバーと通信しているかどうかを簡単に知ることができます。
SSL 証明書は、Webサイトの安全な接続を保証する信頼できる認証局から取得されます。SSL証明書には通常、認証のロゴと、コンピューターに送信されるデータを暗号化および復号化するために必要な公開キーも含まれています。SSLキー機能
セッション中に複数のSSL キーを生成できます。キーは、情報が変更または改ざんされていないことを確認するために使用されます。
ライフサイクルの違い
証明書はSSLキーよりも長持ちします。SSL証明書は証明機関から取得され、銀行や企業が定期的に更新できます。一方、SSLキーまたはセッションキーは、セッション中に一意に生成され、セッションの終了時に破棄されます。
OK、技術者以外の人が理解できるようにこれを分解しましょう。
このように考えてください。証明書は、銀行のセーフティボックスのようなものです。それには多くの重要なものが含まれています。一般的にあなたの身元を含むもの。証明書には公開鍵があり、それを開くには秘密鍵が必要です。
セーフティボックスも、証明書と同様に2つのキーを使用して開きます。
セーフティボックスを使用すると、銀行家の鍵は銀行に留まり、公開鍵は証明書とともに残るため、公開鍵のようになります。「証明書を取得する」ために必要な秘密鍵があり、セーフティボックスの例では、公開鍵に加えて秘密鍵も必要です。
セーフティボックスを実際に開ける前に、まず身元を確認する必要があります(証明書要求のようなもの)。識別されたら、秘密鍵と公開鍵を使用してセーフティボックスを開きます。これは、証明書の要求を作成してから、証明機関から証明書を取得することに似ています(識別(信頼)でき、適切なキーがある場合)。