web-dev-qa-db-ja.com

opensslを使用する非ブラウザーソフトウェアにSSL証明書に対するCN /ホスト名検証が必要ですか?なぜですか?

「信頼証明書」などの属性がある場合、これはどの程度重要ですか。

OpenSSLは現在実装していますか?実装していない場合、なぜOpenSSLが実装されないのですか?

これはブラウザ以外のクライアントとサーバーの間です。

1
user49149

サーバーに接続してサーバーが有効な証明書を返すと、IDが証明書に含まれている「有効な」サーバーに接続したことを(PKIのさまざまな条件に従って)「知る」ことができます。ただし、この惑星には複数のSSLサーバーがあります。あなたが連絡したサーバーがあなたが話したいかどうかを決定する必要があります。これが名前チェックの意味です。

これは、authentication(あなたが誰と話しているかを確認する)とauthorization(あなたが本当に誰と話しているかを決定する)の違いです誰と話すべきか)。両方必要です。 name check を削除する場合、クライアントが本物のサーバーと別の名前を持つ他のサーバーを区別できるようにする他のメカニズムを実装する必要があります。

4
Thomas Pornin

それはまだ同じくらい重要です。私がMr.BadHackerであっても、私がMr.BadHackerであることを示す信頼できる証明書を取得できます。 SSH経由でオフィスに接続しようとしていて、Mr.BadHackerへの信頼できる接続をオフィスとして受け入れる場合、問題が発生します。

信頼とは、サイトが優れていることを意味するのではなく、単に彼らが彼らが言うとおりの人物であることを意味しています。彼らが誰であるかを確認することもしなければ、それは完全に無意味です。

2
AJ Henderson

他の回答では、ID(ホスト名)を確認することが重要である理由がすでに述べられています。

どのようにopensslを使用するか:現在のリリース(1.0.1)には必要なチェックがないため、opensslのほとんどのユーザーが独自に(多くの場合間違って)コードを作成するか、チェックを省略します(さらに悪い)。

リリース1.1で計画されているコードベースには、チェックがないよりも優れているはずの関数x509_check_Hostがありますが、その実装も間違っています(OpenSSLチケット#3288を参照)。

1
Steffen Ullrich