1

SSL 暗号化 (Oracle Advanced Security) を使用するように Oracle 11g (v11.2.0) データベースを構成しました。これは、SSL with Oracle JDBC Thin Driverの指示に従って行いました。ホワイト ペーパーの「ケース 1」である、暗号化のみ、認証なし。

次に、暗号化されたデータベースにアクセスできるかどうかを確認するための小さなテスト クライアントを開発しました。コードの一部を次に示します。

String url = "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=our_host)"
      + "(PORT=2484))(CONNECT_DATA=(SERVICE_NAME=our_service_name)))";

System.out.println("set properties");
Properties props = new Properties();
props.setProperty("user", "system");
props.setProperty("password", "our_password");
props.setProperty("oracle.net.ssl_cipher_suites",
                    "(SSL_DH_anon_WITH_3DES_EDE_CBC_SHA, "
                        + "SSL_DH_anon_WITH_RC4_128_MD5,"
                        + "SSL_DH_anon_WITH_DES_CBC_SHA)");

System.out.println("get connection");
Connection con = DriverManager.getConnection(url, props);
System.out.println("got a connection");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select sysdate from dual");
while (rs.next()) {
  System.out.println("result = "+rs.getString(1));
}
rs.close();
stmt.close();
con.close();

これは問題なく機能し、正しい値を吐き出します。しかし、悲しいかな、ただのテスト クライアントです。次に、Web アプリケーションが暗号化されたデータベースにアクセスできるように、Tomcat (v7.0.21) Web コンテナーを構成する必要があります。暗号化の前は、次のようなdataSourceinを使用していました。{tomcat.home}/conf/context.xml

<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>

<Resource name="our_name" auth="Container"
          driverClassName="oracle.jdbc.driver.OracleDriver" factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
          type="javax.sql.DataSource" logAbandoned="true" maxActive="30"
          maxIdle="5" maxWait="1000" removeAbandoned="true"
          removeAbandonedTimeout="60" url="jdbc:oracle:thin:@our_host:1521:our_sid"
          username="admin_user" password="admin_user" validationQuery="select sysdate from dual"
          testOnReturn="true" />
<!-- more Resources ... -->
</Context>

インターネット上のいくつかの投稿で見つけたいくつかのセットアップをいじりました(<Connector>たとえば、server.xml以下を参照してください-、jdbcシンドライバーのURLを変更したなど)が、何も達成しませんでした。続行する方法や、これをデバッグする方法さえわかりません。

のコネクタのコメントを外してテストしました(失敗しました){tomcat.home}/conf/server.xml

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
           maxThreads="200" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS"
           ciphers="SSL_DH_anon_WITH_DES_CBC_SHA, SSL_DH_anon_WITH_RC4_128_MD5, SSL_DH_anon_WITH_3DES_EDE_CBC_SHA" />

以前と同じように .xml ファイルを介して行いたいので、顧客に新しいリリースを出荷する必要はありません。

さらに詳しい情報が必要な場合は、その場所と方法を教えていただければ、すべてを提供させていただきます。

お時間をいただきありがとうございます。

よろしく

レネ

4

1 に答える 1

3

さて、私はそれを理解しました...

  • server.xml の変更は不要でした (これは、クライアント <-> Web サーバーではなく、データベースのみを暗号化したことを考えると理にかなっています)。
  • リソースの URL を tnsnames スタイルの形式に変更しました
  • リソースに connectionProperties 属性を追加しました

    url="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=our_host)(PORT=2484))(CONNECT_DATA=(SERVICE_NAME=our_service_name)))" connectionProperties="oracle.net. ssl_cipher_suites=SSL_DH_anon_WITH_3DES_EDE_CBC_SHA,SSL_DH_anon_WITH_RC4_128_MD5,SSL_DH_anon_WITH_DES_CBC_SHA"

于 2013-08-05T08:50:54.777 に答える