2017-06-21 36 views
0

我需要一個新的環境幫助,我建立甲骨文的技術合作計劃的tomcat Thin驅動程序不能正常工作

的Tomcat(錢包+ JDBC Thin驅動程序) - > TCPS - >甲骨文12

我一直下面這篇文章(Oracle JDBC thin driver SSL),沒有運氣

當我嘗試啓動Tomcat時,顯示

Caused by: java.security.SignatureException: Signature length not correct: got 256 but was expecting 128 
    at sun.security.rsa.RSASignature.engineVerify(RSASignature.java:189) 
    at java.security.Signature$Delegate.engineVerify(Signature.java:1219) 

以下錯誤我覺得我失去了一些東西,但我不是k現在在哪裏..

Oracle方面

的listener.ora

WALLET_LOCATION = 
    (SOURCE = 
    (METHOD = FILE) 
    (METHOD_DATA = 
     (DIRECTORY = /u01/app/oracle/wallet) 
    ) 
) 

SSL_CLIENT_AUTHENTICATION = FALSE 

LISTENER = 
    (DESCRIPTION_LIST = 
    (DESCRIPTION = 
     (ADDRESS = (PROTOCOL = TCP)(HOST = 72795752816f)(PORT = 1521)) 
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) 
     (ADDRESS = (PROTOCOL = TCPS)(HOST = 72795752816f)(PORT = 2484)) 
    ) 
) 
ADR_BASE_LISTENER = /u01/app/oracle 

SQLNET.ORA

WALLET_LOCATION = 
    (SOURCE = 
    (METHOD = FILE) 
    (METHOD_DATA = 
     (DIRECTORY = /u01/app/oracle/wallet) 
    ) 
    ) 

SQLNET.AUTHENTICATION_SERVICES = (TCPS,NTS,BEQ) 
SSL_CLIENT_AUTHENTICATION = FALSE 
SSL_CIPHER_SUITES = (SSL_RSA_WITH_RC4_128_SHA,  SSL_RSA_WITH_RC4_128_MD5) 

SQLNET.WALLET_OVERRIDE = TRUE 

Tomcat的側面

的tnsnames.ora

TEST = 
(DESCRIPTION = 
    (ADDRESS = 
    (PROTOCOL = TCPS) 
    (HOST = 72795752816f) 
    (PORT = 2484) 
) 
    (CONNECT_DATA = 
    (SERVER = DEDICATED) 
    (SERVICE_NAME = xe.oracle.docker) 
    ) 
) 

的context.xml

<Resource name="jdbc/edorasone" auth="Container" 
      type="javax.sql.DataSource"  driverClassName="oracle.jdbc.OracleDriver" 
     url="jdbc:oracle:thin:/@TEST" 
    connectionProperties="javax.net.ssl.keyStore=/tomcat/wallet/cwallet.sso;\ 
javax.net.ssl.keyStoreType=PCKS12;\ 
oracle.net.ssl_version=1.0;\ 
oracle.net.ssl_cipher_suites=(SSL_RSA_WITH_RC4_128_SHA, SSL_RSA_WITH_RC4_128_MD5);\ 
oracle.net.authentication_services=(TCPS)" 
/> 

任何幫助將是非常讚賞ADVA

納喬

感謝。

BTW:如果在Tomcat中使用sqlnet客戶端與sqlnet.ora(= Oracle)& tnsnames.ora(= Tomcat)我可以連接沒有問題。

回答

0

(a)您是否有使用Oracle錢包需要額外的罐子? (oraclepki.jar,osdt_core.jar,osdt_cert.jar)?
(2)更正javax.net.ssl.keyStoreType = PKCS12。你在那裏有一個錯字。
(3)DB URL應該是「jdbc:oracle:thin:@TEST」,並且由於您使用的是別名,因此需要設置系統屬性-Doracle.net.tns_admin =(a)是否需要額外的jar包使用Oracle錢包? (oraclepki.jar,osdt_core.jar,osdt_cert.jar)?

查看SSL with JDBC whitepaper瞭解更多詳情。

0

非常感謝您的幫助。 一)是的,他們已經到位 B)它與PCKS12 C)TNS_ADMIN是到setenv.sh腳本

最後我得到了我的建立現在的工作。

SSL_CIPHER_SUITES必須雙方匹配,所以我所做的就是給力相同的密碼

SQLNET.ORA

SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA) 

SETENV。SH

CATALINA_OPTS+=" -Doracle.net.ssl_cipher_suites=TLS_RSA_WITH_AES_256_CBC_SHA " 

(注意前綴是不一樣的:在SSL_ Oracle方面,和TLS_到Tomcat/Java端)

對於具有類似配置的問題,那幾件,,我讓Tomcat的配置這裏邊

############################### 
# DB CONNECTION CONFIGURATION # 
############################### 
# Oracle DB (JNDI) 
CATALINA_OPTS+=" -Dspring.profiles.active=database-jndi " 
CATALINA_OPTS+=" -Doracle.net.tns_admin=/tomcat/wallet " 
CATALINA_OPTS+=" -Djavax.net.ssl.keyStore=/tomcat/wallet/keystore.jks " 
CATALINA_OPTS+=" -Djavax.net.ssl.keyStoreType=JKS " 
CATALINA_OPTS+=" -Djavax.net.ssl.keyStorePassword=Passw0rd " 
CATALINA_OPTS+=" -Djavax.net.ssl.trustStore=/tomcat/wallet/truststore.jks "  
CATALINA_OPTS+=" -Djavax.net.ssl.trustStorePassword=Passw0rd "     
CATALINA_OPTS+=" -Doracle.net.authentication_services=TCPS " 
CATALINA_OPTS+=" -Doracle.net.ssl_cipher_suites=TLS_RSA_WITH_AES_256_CBC_SHA " 

的context.xml

<Resource name="jdbc/efdesone" auth="Container" 
     type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver" 
     url="jdbc:oracle:thin:/@TEST" 
    username="<username>" password="<password>" maxActive="20" maxIdle="10" maxWait="-1" 
/> 

親切的問候

納喬。