javax.net.ssl.SSLKeyException: RSA premaster secret error

来源:互联网 发布:算法第四版pdf文字版 编辑:程序博客网 时间:2024/06/05 11:54

错误代码

调用api的时候控制台一直报这个错误

java.lang.reflect.UndeclaredThrowableException    at com.sun.proxy.$Proxy14.getKRByQuery(Unknown Source)    at com.tts.util.KRServiceResult.getKRByQueryByPC(KRServiceResult.java:65)    at com.tts.biz.BaiduKeywordCollectBiz.begin(BaiduKeywordCollectBiz.java:71)    at com.tts.biz.BaiduKeywordCollectBiz.start(BaiduKeywordCollectBiz.java:42)    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)    at java.lang.reflect.Method.invoke(Unknown Source)    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:354)    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:305)    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:133)    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:408)    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570)    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772)    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839)    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538)    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93)    at com.taotaosou.spring.SpringHelper.loadApplicationContext(SpringHelper.java:38)    at com.tts.Booter.main(Booter.java:10)Caused by: com.baidu.drapi.autosdk.exception.ApiException: javax.net.ssl.SSLKeyException: RSA premaster secret error    at com.baidu.drapi.autosdk.core.JsonConnection.sendRequest(JsonConnection.java:88)    at com.baidu.drapi.autosdk.core.GZIPJsonConnection.sendRequest(GZIPJsonConnection.java:52)    at com.baidu.drapi.autosdk.core.JsonConnection.sendRequest(JsonConnection.java:100)    at com.baidu.drapi.autosdk.core.JsonProxy.invoke(JsonProxy.java:80)    ... 26 moreCaused by: javax.net.ssl.SSLKeyException: RSA premaster secret error    at sun.security.ssl.RSAClientKeyExchange.<init>(Unknown Source)    at sun.security.ssl.ClientHandshaker.serverHelloDone(Unknown Source)    at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source)    at sun.security.ssl.Handshaker.processLoop(Unknown Source)    at sun.security.ssl.Handshaker.process_record(Unknown Source)    at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)    at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)    at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)    at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)    at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(Unknown Source)    at com.baidu.drapi.autosdk.core.JsonConnection.sendRequest(JsonConnection.java:84)    ... 29 moreCaused by: java.security.NoSuchAlgorithmException: SunTlsRsaPremasterSecret KeyGenerator not available    at javax.crypto.KeyGenerator.<init>(KeyGenerator.java:158)    at javax.crypto.KeyGenerator.getInstance(KeyGenerator.java:207)    at sun.security.ssl.JsseJce.getKeyGenerator(Unknown Source)    ... 42 more

网上查了很多,大部分说是把jre里面的lib/ext/sunjce_provider.jar放入项目中就可以了,
但是我一直没有成功,,

后来才发现,原来是我java环境错了(尴尬),打开环境,重新配一下,运行果然没问题了。

这个问题不禁让我想到我之前的一个很蠢的错误(浪费了大半天的调试)

控制台报错

程序在本机运行都是正常的,发布到服务器上之后运行就报如下的错误

警告: com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@4b76c591 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception:   java.sql.SQLException: Access denied for user 'webman'@'localhost' (using password: YES)      at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)      at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)      at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3515)      at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447)      at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:911)      at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3953)      at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1276)      at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2048)      at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:723)      at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)      at sun.reflect.GeneratedConstructorAccessor7.newInstance(Unknown Source)      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)      at java.lang.reflect.Constructor.newInstance(Constructor.java:422)      at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)      at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:302)      at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)      at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:134)      at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)      at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)      at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)      at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)      at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)      at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)      at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)  

后来查出的原因让我吐血

url=
username=root
password=root

  <property name="url" value="${url}" />    <property name="username" value="${username}" />    <property name="password" value="${password}" />

发布到unix服务器上因为 value=”${username} 读取了系统主账户,后来改成 jdbc.baidu.username 就没有问题了。

阅读全文
0 0
原创粉丝点击