1

RC4_256 の代わりに AES256 を使用して、クライアント アプリケーションを暗号化された Oracle 11g サーバーに強制的に接続しようとしています。RC4_256 暗号化タイプが「間もなく」無効になることが通知されました。

接続プールとして c3p0 で最新の 11g ドライバーを使用しています。以下はBeanの設定です。

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
    <property name="driverClass" value="oracle.jdbc.OracleDriver"/>
    <property name="jdbcUrl" value="${jdbc.url}"/>
    <!-- other pool properties -->
    <property name="properties">
        <props>
            <prop key="user">${jdbc.username}</prop>
            <prop key="password">${jdbc.password}</prop>

                            <!-- this is one set of many I've tried -->
            <prop key="oracle.net.encryption_client">REQUIRED</prop>
            <prop key="oracle.net.encryption_types_client">( AES256 )</prop>
        </props>
    </property>
</bean>

oracle.net.encryption_types_client、およびoracle.net.encryption_client、CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_LEVEL、CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_TYPESを使用して、多くの順列を試しました。Oracle ドキュメントにあるように、Java プロパティなどのように名前を付けました。

RC4_256 以外では接続できませんでした。

データベース サーバーで次のクエリを使用して、クライアントの接続方法を確認しています。v$session_connect_info テーブルの Network_Service_Banner は、接続方法を示しています。ここに私が受け取っている現在のメッセージがあります

Oracle Advanced Security: Solaris用RC4_256暗号化サービス・アダプタ: バージョン11.2.0.3.0 - Prod

select s.username,s.machine,s.program,S.LOGON_TIME,s1.* 
from v$session s, v$session_connect_info s1 
where s.sid = s1.sid and s.username in ('MYAPP') and s.machine = 'MY-PC'
order by S.LOGON_TIME DESC, s.sid

この時点で車軸に巻き付いているので、助けていただければ幸いです。

4

2 に答える 2

1

私も最近このテーマについて読んでいるので、これを見てみましょう。これを機能させるには、サーバーやクライアントの SQLNET.ora ファイルを変更する必要があるようです。

AES を使用してデータベースに接続する方法の図があるこのリンクを参照してください。具体的には、Example 9-3 Setting Data Encryption and Integrity Parametersを参照してください。この例の上には、 AES 暗号化を有効にするためにsqlnet.oraファイルで行う必要がある設定があります。これらは以下のリンクから引用されています

SQLNET.ENCRYPTION_SERVER = ACCEPTED 
SQLNET.CRYPTO_CHECKSUM_SERVER = ACCEPTED 
SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER= (MD5, SHA1) 
SQLNET.ENCRYPTION_TYPES_SERVER= (AES256, AES192, AES128)
SQLNET.CRYPTO_SEED = 2z0hslkdharUJCFtkwbjOLbgwsj7vkqt3bGoUylihnvkhgkdsbdskkKGhdk

このリンクから引用:

データ暗号化アルゴリズムと整合性アルゴリズムの両方について、サーバーは、クライアントの sqlnet.ora ファイルにリストされているアルゴリズムと一致する sqlnet.ora ファイルにリストされている最初のアルゴリズムを選択するか、クライアントの sqlnet にアルゴリズムがリストされていない場合は、クライアントのインストール済みリストにあるアルゴリズムを選択します。 ora ファイル。サーバーの sqlnet.ora ファイルにエントリがない場合、サーバーはインストール済みリストを順番に検索して、クライアント側 (クライアントの sqlnet.ora ファイルまたはクライアントのインストール済みリスト) のアイテムと一致させます。一致するものがなく、接続の一方がアルゴリズムの種類 (データの暗号化または整合性) を REQUIRED である場合、接続は失敗します。それ以外の場合、接続はアルゴリズム タイプが非アクティブで成功します。

上記のページを読み、A.2.1.5 SQLNET.ENCRYPTION_TYPES_SERVERパラメータの表A-6 SQLNET.ENCRYPTION_TYPES_SERVERパラメータ属性の表を参照すると、サーバーによって最初に一致する暗号化アルゴリズムがRC4_256であることがわかります。あなたの場合、インストールされた暗号化アルゴリズムのクライアント側と一致している可能性があり、それが接続が成功する理由です。ただし、AES 256 などの別のアルゴリズムを指定すると、クライアントとサーバーがこのアルゴリズムをネゴシエートできず、接続に失敗する場合があります。

上記のページでは、データの整合性と暗号化を有効にするために必要な設定について詳しく説明しています。

これが解決への一歩になることを願っています

于 2013-09-11T07:37:19.130 に答える