2

jax-ws クライアントを使用して安全な Web サービスに接続しています。Web サイトでは、カスタム キーストアにインポートした自己署名証明書を使用し、このサイトの多くの記事に沿ってソケット ファクトリを作成しました。

ただし、Web サービスに接続しようとするたびに、 sun.security.provider.certpath.SunCertPathBuilderException: 要求されたターゲットへの有効な証明書パスが見つかりませんというメッセージが表示され続けます。デフォルトの SSL コンテキストをカスタム コンテキストに設定すると、スタンドアロン クライアントとして実行できますが、Glassfish アプリ サーバーにデプロイした後、同じエラーが発生します。

どんなアイデアでも大歓迎です。以下は、SSL コンテキストを作成するコードの抜粋です。

        SSLContext ctx = SSLContext.getInstance("SSLv3");
        KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
        KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
        ks.load(Client.class.getResourceAsStream("hfcerts"), "changeit".toCharArray() );
        kmf.init(ks, "changeit".toCharArray());

        TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
        tmf.init(ks);
        TrustManager[] trustManagers = tmf.getTrustManagers();
        ctx.init(kmf.getKeyManagers(), trustManagers, new SecureRandom());

        SSLContext.setDefault(ctx);

        ((BindingProvider) port).getRequestContext().put(JAXWSProperties.SSL_SOCKET_FACTORY, ctx.getSocketFactory());

また、自分の設定がアプリケーション サーバーの一般的な SSL 設定に影響を与えないようにします。

4

0 に答える 0