[英]Data encryption issues with Oracle Advanced Security
我已使用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));
}
}
您可以在“ 使用Oracle JDBC Thin Driver的SSL ”中找到文檔。
特別是,您可能應該使用PROTOCOL = TCPS
而不是PROTOCOL = TCP
。 我還建議使用更強大的密碼套件(並避免使用匿名密碼套件,因為使用它們時,您無需驗證遠程服務器的身份)。
您是否希望SELECT語句返回加密的數據,而System.out.print調用將導致加密的輸出進入屏幕? 如果是這樣,那不是高級安全性的工作方式-高級安全性允許您通過網絡加密數據,但在SQL Net堆棧中未對數據進行加密。 因此,您的SELECT語句將始終以未加密狀態查看數據。 您將需要執行SQL Net跟蹤或使用某種類型的數據包嗅探器來查看加密數據在網絡上的流動。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.