5

keytool を使用して、サーバーとクライアントの認証を行う Web サービスを実装しました。問題は、ホストの名前を含めないと、この認証が機能しないことです。例えば:

keytool -genkey -alias myAlias -keyalg RSA -keypass myPassword -storepass myPassword -keystore my.keystore -dname "CN=myhost"

しかし、ホストまたは IP による検証は必要ありませんし、好きではありません。それを回避する方法はありますか?

ありがとう。

4

3 に答える 3

8

SSL には、要件の一部として、証明書の CN が接続先のホスト名と一致することの検証があります。CN が一致しない場合、ブラウザは間違ったホストとオブジェクトに接続していると見なします。

これを回避する方法はありません。

于 2010-03-09T11:25:47.203 に答える
4

他の投稿者の意見に同意します。SSL を使用している場合、SSL セキュリティ機能セットの一部としてホスト名の検証が必要になることはほぼ間違いありません。

とはいえ、使用しているクライアントによっては、この問題を回避する方法がある可能性があります。エンジニアは、テスト環境、デバッグ、プロトタイピングなどでホスト名の検証を回避します。HttpsURLConnection 経由で接続する Java クライアントを使用している場合は、クライアント クラスに次を追加するだけで簡単に実行できます。

static {
    HttpsURLConnection.setDefaultHostnameVerifier( 
        new HostnameVerifier(){
            public boolean verify(String string,SSLSession ssls) {
            return true;
        }
    });
}
于 2012-11-09T06:34:33.463 に答える
1

標準的なロジックは次のとおりです。データを保護する必要がない場合は、SSL を使用しないでください。保護する必要がある場合は、接続先のホストを知る必要があります。その中間があってはなりません。

ただし、一部の内部環境では、ネットワークと構成を十分に制御できるため、心配する必要はありません。

後者の場合、解決策は使用しているクライアント ライブラリによって異なります。HTTP クライアントを使用している場合は、SSL 構成ガイドをお読みください。独自のものを実装する必要はなく、EasySSLProtocolSocketFactorySecureProtocolSocketFactoryを使用するだけでよい場合があります。

于 2010-03-09T13:29:51.103 に答える