2016-10-30 15 views
0

申し訳ありませんがダンプの質問のように聞こえる場合は、SSLハンドシェイクとSSLの仕組みに関する多くの記事とドキュメントを読んでいます。私は1つの事について混乱しています。もし誰かが私を明確にすることができれば幸いです。SSLの呼び出し中にSSL秘密鍵を使用する必要があります

秘密鍵は秘密にしておくことがわかります。しかし、私のサーバDNSがexample.comで、wgetを使ってSSL呼び出しを行っている場合など、 のリクエストでも秘密鍵を指定してGET/POST呼び出しを行っています(curlまたはwgetを使用しています)。

wget --ca-cert=/etc/certs/ca.crt --certificate=/etc/certs/cert.crt --private-key=/etc/cert/private/privatekey.key --header="Content-Type: application/json" --post-data='{"key":"val"}' https://example.com/test 

しかし、ブラウザからSSL Webページを開くと(例えば、ChromeからGmailを開くなど)、私有鍵を使用する必要はなく、ブラウザは秘密鍵を認識しません。ハンドシェイクブラウザでは、サーバー公開証明書& CAを取得し、乱数を暗号化してSSLセッションを開くためにサーバーに戻します。

私は愚かなものが見つからず混乱していることを知っています。 SSLリクエストで誰かが秘密鍵を使用する必要があるのか​​誰かに教えてもらえますか?

答えて

1

Mutual Authenticationの場合に使用します。サービスプロバイダに証明書などの支払いを要求し、MITM攻撃を回避するための標準的なサーバ認証と同様に、

クライアント認証は、サーバーに対するクライアントのIDを証明します。しかし、これは通常、正当化されていないユーザーに負担をかけ、クライアントのユーザー名/パスワードまたはoauthトークンによって満たされます。

クライアント認証はオプションで、他の方法にフォールバックすることができます。

+0

これは、ssl_verify_client行(nginxまたはそれに似たapache2)にコメントするか、ssl_verify_clientをオフにすると、wgetを使用して上記のssl呼び出しを行う際にキーを使用する必要はなくなりますか? – Tintu

+0

はい、同じエンドポイントのブラウザでうまく動作するかどうかは不明ですがそうであれば、おそらく 'wget --header =" Content-Type:application/json "--post-data = '{" key ":" val "}' https:// exampleを実行するだけです。 com/test' しかし、クライアントの認証を強制する*エンドポイントをテストしている場合は、あなたが提案した変更が適切なものになります。 –

+0

ありがとうございます。 – Tintu

関連する問題