Как настроить SSL для соединения с Jruby Oracle? - PullRequest
1 голос
/ 05 марта 2019

В 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?

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

Есть много способов установить свойства соединения JKS. (а) Программно используя свойства соединения. Смотрите пример 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 для добавления этих свойств соединения. Проверьте блог

0 голосов
/ 06 марта 2019

Извините, это только половина ответа - я не очень разбираюсь в JRuby, но со стороны Oracle - в этом Oracle PDF описано, как настроить SSL с тонким драйвером Oracle JDBC . Возможно, вы захотите прочитать все это, но вот их пример Java для использования хранилищ ключей JKS (немного другой для 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); 

Вы видите, как он настраивает свойства Java перед вызовом DriverManager.getConnection? Я думаю, что вам нужно войти в ваш jdbc_connection интерфейс перед тем же вызовом getConnection. Но я не достаточно знаком с Руби, чтобы знать, как это сделать.

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