web-dev-qa-db-ja.com

秘密鍵と公開鍵の使用方法は?

私はSSL証明書を初めて使用します.SSL証明書について学びたいと思い、cpanelにログインしている間に自分で秘密鍵と公開鍵を生成しました、私はそれらを使用して自分のサイトへの安全な接続を生成する方法を知り、私は自分の公開鍵と秘密を持っていますキーが、それらを使用する方法?誰かがニースのページを推薦できますか、または誰かがそれを教えてもらえますか?前もって感謝します

4
Nishchal Gautam

HTTPS接続の最初の数ミリ秒 Jeff Moserの有用な読書を見つけるかもしれません。ブラウザーがサーバーとのHTTPS接続をセットアップするときにワイヤ上で何が起こるかについての詳細な説明を提供します。

この興味深い ビデオ は、ペイントカラーを混合することにより公開キー暗号を示しています!

OpenSSL コマンドラインツールもご覧ください。これを使用して、キーペアの生成、証明書の生成、ミニCAのセットアップ、生成した証明書のいずれかを使用するサーバーの実行、任意のSSLサーバーへの接続、使用するSSL構成と証明書に関する詳細情報の取得を行うことができます。 OpenSSLでできることの多くの例については、 OpenSSLコマンドラインHOWTO を参照してください。

また、次のようなオンラインツールを使用して、インターネットに面したWebサイトの証明書とそのSSL構成に関する詳細情報を取得できます。

環境でSSLを設定する限り、使用しているWebサーバーやホスティングプロバイダーに依存します。たとえば、「SSLをセットアップする」+ Webサーバーまたはホストの名前をグーグルで試すことができます(例:「ApacheでSSLをセットアップする」)。また、ほとんどの証明機関(Verisignなど)は通常、SSLを使用するためのさまざまなWebサーバーとアプリケーションのセットアップに関する適切な情報を提供します。

6
PhilR

HTTPSに使用される証明書はX.509証明書です( HTTP over TLS 、つまりHTTPS、仕様で言及されている証明書のみです)。

(サーバー)証明書は、サーバーのIDをクライアントに証明するために使用される情報です。これは、公開キーとさまざまな情報(主に秘密キーを管理するキーペアの所有者のIDに関する)の組み合わせであり、この組み合わせは証明書の発行者の秘密キーを使用して署名されます。

証明書を信頼するということは、そのコンテンツを信頼すること、特に、公開キーが証明書で表されるIDに属していることを信頼することを意味します。サーバーの観点から見ると、IDはサーバー名になります(RFC 2818セクション3.1またはRFC 6125を参照)。証明書は原則として公開情報です。

サーバーの秘密鍵(必ずしも発行者の秘密鍵ではない)が使用される場所は、認証されたSSL/TLS鍵交換が行われるためです。この鍵交換の間、RSAまたはDiffie-Helman鍵交換のどちらを使用しているかに応じて(暗号スイートに応じて、DHは現在非常に一般的です)、秘密鍵はクライアントの情報を解読するために使用されます証明書の公開鍵(RSA)で暗号化されているか、サーバー(DH)によって生成された情報に署名するために使用されています。いずれにしても、リモートパーティがその証明書の秘密鍵を持っていることがクライアントに証明されます。キー交換メカニズムの最後に、クライアントとサーバーの両方が共有キーを使用します。 ( この質問 は鍵交換に関して興味深いかもしれませんが、おそらくTLS仕様自体を読むことをお勧めしますが、おそらく何度も...)

両方を手に入れたら、つまり、証明書を検証して公開鍵とIDのバインディングを信頼し、リモートパーティがその証明書に公開鍵の秘密鍵を持っていることを知ると、リモートパーティがIDを持つサーバーであることがわかります証明書に記載されています(サブジェクトの別名、または存在しない場合はサブジェクトDNの共通名)。

「SSLを安全にする理由」に対するこの回答 にも興味があるかもしれません。

Webサイトでこれを自分で試してみたい場合は、公開鍵以上のものが必要になります。証明書、場合によっては自己署名証明書を作成するか、独自のCAを使用する必要があります。使用するホスト名が少なくともサブジェクトDNの共通名、またはサブジェクトの別名DNSエントリにあることを確認してください。たとえば、OpenSSLを使用して自己署名証明書を作成するためのチュートリアルが多数あります。 OpenSSLのCA.pl(マンページを参照)は、ミニCAを作成する場合にも役立ちます。

2
Bruno