2

JDBC ドライバーを使用して Sybase ASE 15.7 への SSL 接続を確立しようとしていますが、うまくいきません。次のオプションを試しました。

  1. JTDS 1.25 ドライバー (jtds-1.2.5.jar) の使用

    次の接続文字列を使用します。jdbc:jtds:sybase://host:port;databaseName=dbname;ssl=request

    私は得たNetwork error IOException: Connection refused

  2. Jconnect 4 (jconn4.jar) の使用

    次の接続文字列を使用します。

    jdbc:sybase:Tds:host:port/dbname?ENABLE_SSL=true

    私は得たjava.sql.SQLException: JZ00L: Login failed. Examine the SQLWarnings chained to this exception for the reason(s) ... java.sql.SQLException: I/O Error: DB server closed connection.

    Sybase ログを確認すると、次のエラーが表示されます。

    kernel SSL or Crypto Error Message: 'The SSL handshake failed. Root error: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol'.

    Sybase サーバーは SSL 接続を想定しているように見えますが、Java クライアントはまだ SSL を使用していません (ただし、接続文字列プロパティは ssl=true とマークされています)。

このエラーも JConnect を使用した SSL についても、Sybase のドキュメントを検索しようとしましたが、うまくいきませんでした。

どんな答えでも大歓迎です-私はドライバーの種類と構成に柔軟に対応しています。

ありがとう

4

2 に答える 2

2

多くの調査の後、私は解決策を見つけました。2 実は。

  1. すべての証明書を信頼する JDBC 接続文字列パラメーターを使用する: すべての証明書を信頼しても構わない場合 (特に、公共のインターネット上で行われているものではなく、作業しているネットワークを完全に信頼する場合にのみこれを行ってください)、接続を追加できます。すべての証明書を信頼するために接続を作成する SSLSocketFactory を示す文字列。接続文字列は次のようになります。jdbc:sybase:Tds:host:port/dbname?ENABLE_SSL=true&SSL_TRUST_ALL_CERTS=true
  2. sybase 証明書の使用: 証明書を Java アプリケーションの信頼ストアにインポートする必要があります。指定されたトラスト ストアを使用していない場合は、 の下にある Java のデフォルトのトラスト ストアにインポートされる場合があります$JAVA_HOME\jreX\lib\security\cacerts証明書は、こちらで説明されているように、keytool を使用してインポートできます。
于 2015-10-29T11:06:27.863 に答える