0

GlassFish 3.x で動作するアプリがあります。https 経由でリモート サーバーと通信します。私のcacertsファイルに、サーバー証明書を追加しました。keystore.jks に、リモート サーバーを実行している会社から発行された秘密鍵を追加しました。これはGlassfish 2.xではうまく機能しますが、3.xではリモートサーバーが私が持っているキーが無効であると不平を言い続けます。

キーストアからキーを削除すると、同じエラーが発生します。キーを読み込んでいないかのように、アプリ/コンテナが必要なキーをどのように認識しているのか疑問に思っています

私の接続コードは次のようになります。

public class SSLSocket {

private static Logger logger = LoggerFactory.getLogger(SSLSocket.class);
private ConnectionProperties connectionProperties;

public TuSSLSocket(ConnectionProperties connectionProperties) {
    this.connectionProperties = connectionProperties;
}

public SSLSocket getSSLSocket() throws Exception{
    SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
    SSLSocket socket = (SSLSocket) factory.createSocket(connectionProperties.getHost(), connectionProperties.getPort());
    socket.setSoTimeout(90000);

    return socket;
}

}

それに応じてホストとポートを設定しましたが、キーストアでこのエイリアスを探す場所はありません。では...アプリは取得するエイリアスをどのように知るのでしょうか?

4

2 に答える 2

0

双方向 SSL とそのすべてを説明すると、ジャズは疲れ果てます。役に立つリンクを見つけようとします。ただし、参考までに、glassfish にデプロイされたアプリケーションが SSL を介してサーバーと通信するためのクライアントとして機能する場合 (たとえば、SSL ポートを介して構成された LDAP サーバー領域)、クライアントとして Glassfish サーバーの ID 証明書 (キーストアから) を使用します。証明書。

ただし、SSL ハンドシェークを明示的にコーディングしている場合、クライアント アプリケーションはキーストアを選択し、ハンドシェークの一部として証明書を提示する必要があります。

以前のバージョンの Glassfish で動作しているため、同じコードで動作するはずです。問題が構成に関連している可能性が非常に高いです。あなたがサーバーに追加したものについて少し混乱しています。keystore.jks通常、他のサーバーの証明書はトラストストアに追加されますcacerts.jks

便利なグラスフィッシュ SSL の例

SSL ソケット クライアントの例

クライアントでキーストアを選択する例。

于 2012-04-11T02:33:54.593 に答える