簡體   English   中英

如何為Jruby Oracle連接設置SSL?

[英]How do I setup SSL for Jruby Oracle connection?

在Rails,Jruby等中,我創建了一個可正常運行的調用,用於查詢網頁中的Oracle數據庫。 我需要在SSL中保護該正常運行的呼叫。

<%
require 'jdbc_connection'

# Database settings
user   = "***REMOVED***"
passwd = "***REMOVED***"
url    = "jdbc:oracle:thin:@***REMOVED***:1521/test"
output = ""
error = ""

select_stmt, rest, select_sql = nil
error = "No Errors."
begin
  conn = OracleConnection.create(user, passwd, url)
  select_sql = "select columnA from test.tableA WHERE name='"+@subject["name"].first+"'"
  select_stmt = conn.create_statement
  rset = select_stmt.execute_query select_sql
  while (rset.next)
    output = output + rset.getString(1)
  end

rescue
  error = "Failed executing Oracle demo from JRuby ", $!, "\n"

  ensure
   # We have to ensure everything is closed here.
   if (!select_stmt.nil?)
    select_stmt.close
   end
   if (!rset.nil?)
    rset.close
   end
   conn.close_connection
end
%>

我認為我需要對密鑰庫,用戶名,密碼和連接字符串的引用。

我在此站點上找到了一個示例連接字符串: https : //blogs.oracle.com/dev2dev/ssl-connection-to-oracle-db-using-jdbc,-tlsv12,-jks-or-oracle-wallets

DB_USER = "hr", DB_PASSWORD ="hr", and 
DB_URL = "jdbc:oracle:thin:@(DESCRIPTION= (ADDRESS=
                   (PROTOCOL=TCPS)(PORT=1522)(HOST=myhost))
                   (CONNECT_DATA=(SERVICE_NAME=myorcldbservicename))
                   (SECURITY=(ssl_server_cert_dn="CN=testcert.oracle.com, O=Oracle Corporation,L=Redwood City,ST=California,C=US")))"

我在哪里引用密鑰庫? 我覺得類OracleConnection可能應該類似於OracleConnectionSSL?

抱歉,這只是答案的一半-我對JRuby不太了解,但是從Oracle方面來說- 此Oracle PDF描述了如何使用Oracle JDBC Thin驅動程序設置SSL 您可能需要閱讀整個內容,但這是使用JKS密鑰庫的Java示例(對於Oracle Wallets略有不同):

String url = "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps(HOST=servername)(PORT=2484))(CONNECT_DATA=(SERVICE_NAME=servicename))))";
Properties props = new Properties();
props.setProperty("user", "scott");
props.setProperty("password", "tiger"); 
props.setProperty("javax.net.ssl.keyStore",
 "D:\\client_jks\\keystore.jks");
props.setProperty("javax.net.ssl.keyStoreType","JKS");
props.setProperty("javax.net.ssl.keyStorePassword","welcome123"); 
Connection conn = DriverManager.getConnection(url, props); 

您會在調用DriverManager.getConnection之前了解它是如何設置Java屬性的? 我認為這需要在您的jdbc_connection接口中進行相同的getConnection調用。 但是我對Ruby不夠熟悉,無法知道如何做到這一點。

有很多方法可以設置JKS連接屬性。 (a)以編程方式使用連接屬性。 請參閱樣本DataSourceForJKS.java

(b)您可以將這些屬性設置為系統屬性。

-Doracle.net.ssl_server_dn_match=true  
-Djavax.net.ssl.trustStore=${TNS_ADMIN}/truststore.jks  
-Djavax.net.ssl.trustStorePassword=welcome1  
-Djavax.net.ssl.keyStore=${TNS_ADMIN}/keystore.jks  
-Djavax.net.ssl.keyStorePassword=welcome1

(c)如果使用的是18.3,則可以利用ojdbc.properties添加這些連接屬性。 查看博客

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM