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

错误代码

调用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 more
Caused 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 more
Caused 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
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值