Проблемы с шифрованием данных в Oracle Advanced Security - PullRequest
0 голосов
/ 03 сентября 2010

Я использовал Oracle Advanced Security для шифрования данных во время передачи данных. Я успешно настроил ssl с указанными ниже параметрами и перезапустил экземпляр. Я получаю данные из класса Java, приведенного ниже. Но я мог прочитать данные без расшифровки, данные не шифруются.

Окружающая среда:

База данных Oragle 11g

SQLNET.AUTHENTICATION_SERVICES= (BEQ, TCPS, NTS)

SSL_VERSION = 0

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

SSL_CLIENT_AUTHENTICATION = FALSE

WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = C:\Users\kcr\Oracle\WALLETS)
)
)

SSL_CIPHER_SUITES= (SSL_RSA_EXPORT_WITH_RC4_40_MD5)

класс Java:

try{
Properties properties = Utils.readProperties("weka/experiment/DatabaseUtils.props"); 
// Security.addProvider(new oracle.security.pki.OraclePKIProvider()); //Security syntax
String url = "jdbc:oracle:thin:@(DESCRIPTION =\n" + 
" (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))\n" + 
" (CONNECT_DATA =\n" + 
" (SERVER = DEDICATED)\n" + 
" (SERVICE_NAME = sal)\n" + 
" )\n" + 
" )";
java.util.Properties props = new java.util.Properties();

props.setProperty("user", "system");
props.setProperty("password", "weblogic");
// props.setProperty("javax.net.ssl.trustStore","C:\\Users\\kcr\\Oracle\\WALLETS\\ewallet.p12"); 
// props.setProperty("oracle.net.ssl_cipher_suites","SSL_RSA_EXPORT_WITH_RC4_40_MD5");
// props.setProperty("javax.net.ssl.trustStoreType","PKCS12");
//props.setProperty("javax.net.ssl.trustStorePassword","welcome2");

DriverManager.registerDriver(new OracleDriver());
Connection conn = DriverManager.getConnection(url, props);
/*8 OracleDataSource ods = new OracleDataSource();
ods.setUser("system");
ods.setPassword("weblogic");
ods.setURL(url);
Connection conn = ods.getConnection();*/

Statement stmt = conn.createStatement();
ResultSet rset = stmt.executeQuery("select * from iris");
///////////////////////////
while(rset.next()) {
for (int i=1; i<=5; i++) {
System.out.print(rset.getString(i));
}
}

Ответы [ 2 ]

0 голосов
/ 03 сентября 2010

Ожидаете ли вы, что ваш оператор SELECT вернет зашифрованные данные и что ваши вызовы System.out.print приведут к тому, что зашифрованный вывод будет выведен на экран? Если это так, то это не так, как работает расширенная защита - Advanced Security позволяет шифровать данные по проводам, но данные не шифруются в стеке SQL Net. Поэтому ваш оператор SELECT всегда будет видеть данные в незашифрованном состоянии. Вам нужно будет выполнить трассировку SQL Net или использовать какой-нибудь анализатор пакетов, чтобы увидеть зашифрованные данные, передаваемые по проводам.

0 голосов
/ 03 сентября 2010

Документацию вы найдете в " SSL с тонким драйвером Oracle JDBC ".

В частности, вам, вероятно, следует использовать PROTOCOL = TCPS вместо PROTOCOL = TCP.Я бы также предложил использовать более сильный набор шифров (и избегать анонимных, поскольку с ними вы не проверяете подлинность удаленного сервера).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...