SSLに関する証明書とキーの違いは何ですか?


126

SSLについて何かを理解しようとするたびに、「キー」と「証明書」が何を指しているのかを常に把握するのに苦労します。私は、多くの人々がそれらを誤ってまたは互換的に使用することを恐れています。キーと証明書に標準的な違いはありますか?


SSLに使用される証明書は、PKI en.wikipedia.org/wiki/Public-key_cryptography
Zoredache

回答:


114

証明書には公開鍵が含まれています。

証明書には、公開キーが含まれるほか、発行者、証明書の使用目的、その他の種類のメタデータなどの追加情報が含まれます。

通常、証明書自体は、CAの秘密キーを使用して認証局(CA)によって署名されます。これにより、証明書の信頼性が検証されます。


4
@Zoredache通常、証明書に公開鍵しか含まれていない場合、証明書と秘密鍵を一緒に含む.p12または.pfxファイルを呼び出すのに良い名前はありますか?
DRS

pkcs12はアーカイブ形式です。キーを含む場合と含まない場合があります。私は通常、特定のファイルに含まれるものについて言及するとき、または単にpkcs12ファイルと言うときは、常に具体的にしようとします。
ゾレダチェ

2
この追加情報はどこに埋もれていますか?私はいくつかの証明書を見ていたし、それはすべて私にはちんぷんかんぷんだ
CodyBugstein

3
あなたが見ている奇妙なのはBase64エンコーディングです。基本的に、彼らは唯一のカジュアルな修正なしと改行のようなものを気にせずにASCIIのために設計されたプロトコルやメカニズムを介して輸送することができることを確認するために、ブラケットなど-それは、電子メールの添付ファイルがそれに変換されていることと同様の理由で、おそらくそのように行うのopensslコマンドをデコードすることができますこれらを解析するか、次のようなオンラインユーティリティを使用できます。lapo.it
LawrenceC

証明書は、CAまたは通信するサーバーによって署名されていますか?
オルシャンスク

58

これらの2つの写真は一緒に私にすべてを説明しました:

ソース:linuxvoice

ここに画像の説明を入力してください

出典:infosecinstitute

ここに画像の説明を入力してください



いいね 1説明:最初の写真は標準(一方向)TLS認証です。2番目の相互(2方向)認証。そして、最初の1回の追加のコールアウトは、信頼が実際にどのように確立されているかをさらに説明するのに役立ちます(その1つのすべての友好的な写真で):クライアントがサーバーの公開鍵証明書を取得した後、クライアントは署名したCAがサーバーの証明書は、クライアントの信頼できるCAのプライベートリストに含まれています(今では、そのCAも信頼していることを確認します)。その後、サーバーにセッションキーを送信しても安全です。セッションキーは、それぞれが後続の通信を暗号化および復号化できるようになりました。
user1172173

linuxvoice.com/…への最初のリンクでは、証明書エラーが発生します。皮肉。
トブ

37

A社が持って言うことができます鍵ペアを、公共の使用のための彼の公開鍵(彼のウェブサイト上で別名SSL)を公開する必要があります。

  • 会社Aは、キーペアの証明書を取得するために、証明機関(CA)に証明書要求(CR)を行う必要があります。
  • 会社Aのキーペアの公開キーは秘密キーではなく、証明書要求の一部として含まれています。
  • 次に、CAはA社のID情報を使用して、要求が証明書を発行するためのCAの基準を満たしているかどうかを判断します。
    CAは要求を承認すると、会社Aに証明書を発行します。簡単に言えば、CAは会社Aの公開鍵に自分の(CAの)秘密鍵で署名し、その真正性を検証します。

したがって、有効なCAの秘密キーで署名されたA社の公開キーは、A社の証明書と呼ばれます。


A社は、(A社の)秘密鍵を(A社の)証明書に関連付けていますか?
トーラOdejayi

いいえ、秘密鍵はA.のためのイボタノキのまま
モフセンHeydari

A社の秘密鍵はどこで使用されますか?
sivann

2
上記の手続きの後。会社Aは、彼のWebサイトに有効なSSL証明書を持っています。Webサイトを通信する訪問者(ブラウザー)は、証明書の公開キーを使用してメッセージを暗号化します。SSL証明書の秘密キーを持っているA社だけがメッセージを復号化できます。
モーセン・ヘイダリ

A社は男性だと思います。
-DimiDak

5

例で説明しましょう。

通常のキーペアベースの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からサーバーに送信されるこの追加情報により、クライアントはサーバーと通信しているかどうかを簡単に知ることができます。


3

SSL 証明書は、Webサイトの安全な接続を保証する信頼できる認証局から取得されます。SSL証明書には通常、認証のロゴと、コンピューターに送信されるデータを暗号化および復号化するために必要な公開キーも含まれています。SSLキー機能

セッション中に複数のSSL キーを生成できます。キーは、情報が変更または改ざんされていないことを確認するために使用されます。

ライフサイクルの違い

証明書はSSLキーよりも長持ちします。SSL証明書は証明機関から取得され、銀行や企業が定期的に更新できます。一方、SSLキーまたはセッションキーは、セッション中に一意に生成され、セッションの終了時に破棄されます。

詳細はこちら


2

OK、技術者以外の人が理解できるようにこれを分解しましょう。

このように考えてください。証明書は、銀行のセーフティボックスのようなものです。それには多くの重要なものが含まれています。一般的にあなたの身元を含むもの。証明書には公開鍵があり、それを開くには秘密鍵が必要です。

セーフティボックスも、証明書と同様に2つのキーを使用して開きます。
セーフティボックスを使用すると、銀行家の鍵は銀行に留まり、公開鍵は証明書とともに残るため、公開鍵のようになります。「証明書を取得する」ために必要な秘密鍵があり、セーフティボックスの例では、公開鍵に加えて秘密鍵も必要です。

セーフティボックスを実際に開ける前に、まず身元を確認する必要があります(証明書要求のようなもの)。識別されたら、秘密鍵と公開鍵を使用してセーフティボックスを開きます。これは、証明書の要求を作成してから、証明機関から証明書を取得することに似ています(識別(信頼)でき、適切なキーがある場合)。


3
<PiratesOfTheCarribean>だから私たちはこのキーを追っています!</ PiratesOfTheCarribean>(読む:まったく意味がありません...)
ティモ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.