2

コード内の SSL エラーを無視する方法について、多くの質問/回答があったことは知っています。

開発リージョンdev.domain.tldでは、SSL 経由でアプリ サーバーを構成しました。

表示される証明書は ですsomedev.domain.tld

証明書を変更する方法はありません。常にドメインの不一致になります。

したがって、WebサービスをデプロイしてWebサービスにhttps://dev.domain.tld接続/呼び出ししようとすると、例外が発生します:

原因: java.security.cert.CertificateException: dev.domain.tld に一致する名前が見つかりません

そしてsomedev.domain.tld、トラスト ストアに CERT があります。

ここで、コード内でそれを変更する方法 (すべてのドメインを受け入れるトラスト マネージャーを使用) のサンプルをたくさん見ましたが、サーバーに接続するときにドメインの不一致を無視するように JVM に指定するにはどうすればよいでしょうか? -Djavax.net.ssl口論か何かですか?

ありがとうございました!

アップデート:

または、Spring-WS を使用しているので、そのために Spring でプロパティを設定する方法はありますか? (Web サービス テンプレート)

アップデート

Spring Security の何かを使用する必要があると思います: http://static.springsource.org/spring-ws/sites/1.5/reference/html/security.html

4

1 に答える 1

3

これは私のクライアントアプリケーションで機能します。おそらく、どこでもHttpsURLConnectionを使用している(またはSpringが内部的に使用している)場合にも機能します。

HostnameVerifier hv = new HostnameVerifier() {
  public boolean verify(String urlHostName, SSLSession session) {
    log.warning(String.format("Warning: URL Host: '%s' does not equal '%s'", urlHostName, session.getPeerHost()));
    return true;
  }
};

HttpsURLConnection.setDefaultHostnameVerifier(hv);

ただし、SSLのベストプラクティスはほとんどありません。最善の解決策は、ホスト名と一致する証明書を使用することです。

于 2010-04-20T21:09:59.857 に答える