oracle.security.crypto.core.CipherException:填充字符串无效(或密码不正确)

时间:2018-06-11 19:34:08

标签: java oracle ssl jdbc java-8

我正在尝试使用下面列出的代码使用SSL侦听器端口访问数据库。

import java.security.Security;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class SSLTester
{
public static void main(String[] args)
throws Exception
{
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
Security.insertProviderAt(new oracle.security.pki.OraclePKIProvider(), 3);
String url = "jdbc:oracle:thin:@(DESCRIPTION = " +
"(ADDRESS_LIST = " +
"(ADDRESS = " +
"(PROTOCOL = TCPS)" +
"(HOST = <hostname>)" +
"(PORT = <port>)" +
")" +
") " +
"(CONNECT_DATA = (SERVICE_NAME = <servicename>))" +
")";

java.util.Properties info = new java.util.Properties();
info.setProperty("oracle.net.authentication_services", "(TCPS)");
info.setProperty("javax.net.ssl.trustStore", "YOUR_WALLET_LOCATION/cwallet.sso");
info.setProperty("javax.net.ssl.trustStoreType", "SSO");
info.setProperty("javax.net.ssl.keyStore", "YOUR_WALLET_LOCATON/cwallet.sso");
info.setProperty("javax.net.ssl.keyStoreType", "SSO");

Connection conn = DriverManager.getConnection(url, info);
Statement stmt = conn.createStatement();
ResultSet rset = stmt.executeQuery("select user from dual");

while (rset.next())
System.out.println(rset.getString(1));

rset.close();
stmt.close();
conn.close();
}
}

但我看到下面的错误。我尝试使用&#34; setProperty&#34;更新用户ID和passowrd。同样但仍然看到同样的错误。

  

java.sql.SQLRecoverableException:IO错误:网络适配器可以   没有建立连接   oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:673)at at   oracle.jdbc.driver.PhysicalConnection。(PhysicalConnection.java:715)     在oracle.jdbc.driver.T4CConnection。(T4CConnection.java:385)     在   oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:30)     在oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:564)at   java.sql.DriverManager.getConnection(DriverManager.java:664)at   java.sql.DriverManager.getConnection(DriverManager.java:208)at   TestOracleSSLConnection.main(TestOracleSSLConnection.java:22)引起   by:oracle.net.ns.NetException:网络适配器不能   建立连接   oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:445)at   oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:464)     at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:594)     在oracle.net.ns.NSProtocol.connect(NSProtocol.java:229)at   oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1360)at at   oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:486)... 7   更多由:oracle.net.ns.NetException:无法初始化ssl   上下文。在   oracle.net.nt.CustomSSLSocketFactory.getSSLSocketFactory(CustomSSLSocketFactory.java:325)     在oracle.net.nt.TcpsNTAdapter.connect(TcpsNTAdapter.java:115)at   oracle.net.nt.ConnOption.connect(ConnOption.java:133)at   oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:411)...还有12个   引起:oracle.net.ns.NetException:无法初始化信任   商店。在   oracle.net.nt.CustomSSLSocketFactory.getTrustManagerArray(CustomSSLSocketFactory.java:413)     在   oracle.net.nt.CustomSSLSocketFactory.getSSLSocketFactory(CustomSSLSocketFactory.java:309)     ... 15更多引起:   oracle.security.crypto.asn1.ASN1FormatException:   oracle.security.crypto.core.CipherException:无效的填充字符串   (或密码错误)at   oracle.security.crypto.cert.PKCS12Safe.input(PKCS12Safe.java:226)at at   oracle.security.crypto.cert.PKCS12Safe。(PKCS12Safe.java:120)at at   oracle.security.crypto.cert.PKCS12.input(PKCS12.java:179)at at   oracle.security.crypto.cert.PKCS12。(PKCS12.java:119)at at   oracle.security.pki.OracleKeyStoreSpi.engineLoad(未知来源)at   oracle.security.pki.OracleSSOKeyStoreSpi.engineLoad(未知来源)     在java.security.KeyStore.load(KeyStore.java:1445)at   oracle.net.nt.CustomSSLSocketFactory.getTrustManagerArray(CustomSSLSocketFactory.java:404)     ......还有16个

1 个答案:

答案 0 :(得分:0)

您可以查看blog了解更多详情吗? Oracle Wallets需要oraclepki.jar,osdt_core.jar和osdt_cert.jar。