Search code examples
javamysqlhibernatedropwizardcloudcaptain

boxfuse app can't connect to RDS database


I am using boxfuse to deploy a dropwizard (0.9.1) app on AWS. I was able to deploy the dev version and my app is working as expected when using the VirtualBox environment.

I am now trying to deply it to AWS without much success. Everything is going as expected until what's below.

Do I need to put anything special in my boxfuse.yml file? I'm using the one I used when deploying to the VirtualBox environment. Do I need to create anything prior in my AWS account?

Any ideas what I could be doing wrong? I searched around and couldn't find much of anything to try?

i-e482a13c => DEBUG [2016-04-17 02:06:42,949] org.hibernate.boot.registry.selector.internal.StrategySelectorImpl: Registering named strategy selector [org.hibernate.dialect.Dialect] : [MySQL5InnoDB] -> [org.hibernate.dialect.MySQL5InnoDBDialect] (replacing [org.hibernate.dialect.MySQL5InnoDBDialect])
i-e482a13c => DEBUG [2016-04-17 02:06:43,021] org.hibernate.service.spi.ServiceBinding: Overriding existing service binding [org.hibernate.secure.spi.JaccService]
i-e482a13c => DEBUG [2016-04-17 02:06:43,021] org.hibernate.cfg.Configuration: Preparing to build session factory with filters : {}
i-e482a13c => ERROR [2016-04-17 02:06:44,067] org.apache.tomcat.jdbc.pool.ConnectionPool: Unable to create initial connections of pool.
i-e482a13c => ! sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
i-e482a13c => ! at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141) ~[na:1.8.0-8u74]
i-e482a13c => ! at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126) ~[na:1.8.0-8u74]
i-e482a13c => ! at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280) ~[na:1.8.0-8u74]
i-e482a13c => ! at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382) ~[na:1.8.0-8u74]
i-e482a13c => ! ... 57 common frames omitted
i-e482a13c => ! Causing: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
i-e482a13c => ! at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:387) ~[na:1.8.0-8u74]
i-e482a13c => ! at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292) ~[na:1.8.0-8u74]
i-e482a13c => ! at sun.security.validator.Validator.validate(Validator.java:260) ~[na:1.8.0-8u74]
i-e482a13c => ! at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324) ~[na:1.8.0-8u74]
i-e482a13c => ! at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229) ~[na:1.8.0-8u74]
i-e482a13c => ! at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124) ~[na:1.8.0-8u74]
i-e482a13c => ! at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1491) ~[na:1.8.0-8u74]
i-e482a13c => ! ... 51 common frames omitted
i-e482a13c => ! Causing: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
i-e482a13c => ! at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) ~[na:1.8.0-8u74]
i-e482a13c => ! at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1949) ~[na:1.8.0-8u74]
i-e482a13c => ! at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302) ~[na:1.8.0-8u74]
i-e482a13c => ! at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296) ~[na:1.8.0-8u74]
i-e482a13c => ! at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1509) ~[na:1.8.0-8u74]
i-e482a13c => ! at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216) ~[na:1.8.0-8u74]
i-e482a13c => ! at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979) ~[na:1.8.0-8u74]
i-e482a13c => ! at sun.security.ssl.Handshaker.process_record(Handshaker.java:914) ~[na:1.8.0-8u74]
i-e482a13c => ! at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062) ~[na:1.8.0-8u74]
i-e482a13c => ! at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375) ~[na:1.8.0-8u74]
i-e482a13c => ! at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403) ~[na:1.8.0-8u74]
i-e482a13c => ! at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387) ~[na:1.8.0-8u74]
i-e482a13c => ! at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:149) ~[payload.jar:na]
i-e482a13c => ! ... 43 common frames omitted
i-e482a13c => ! Causing: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
i-e482a13c => ! 
i-e482a13c => ! The last packet successfully received from the server was 634 milliseconds ago.  The last packet sent successfully to the server was 631 milliseconds ago.
i-e482a13c => ! at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0-8u74]
i-e482a13c => ! at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0-8u74]
i-e482a13c => ! at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0-8u74]
i-e482a13c => ! at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0-8u74]
i-e482a13c => ! at com.mysql.jdbc.Util.handleNewInstance(Util.java:404) ~[payload.jar:na]
i-e482a13c => ! at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:981) ~[payload.jar:na]
i-e482a13c => ! at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:164) ~[payload.jar:na]
i-e482a13c => ! at com.mysql.jdbc.MysqlIO.negotiateSSLConnection(MysqlIO.java:4801) ~[payload.jar:na]
i-e482a13c => ! at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1643) ~[payload.jar:na]
i-e482a13c => ! at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1215) ~[payload.jar:na]
i-e482a13c => ! at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2255) ~[payload.jar:na]
i-e482a13c => ! at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2286) ~[payload.jar:na]
i-e482a13c => ! at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2085) ~[payload.jar:na]
i-e482a13c => ! at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:795) ~[payload.jar:na]
i-e482a13c => ! at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44) ~[payload.jar:na]
i-e482a13c => ! at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0-8u74]
i-e482a13c => ! at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0-8u74]
i-e482a13c => ! at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0-8u74]
i-e482a13c => ! at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0-8u74]
i-e482a13c => ! at com.mysql.jdbc.Util.handleNewInstance(Util.java:404) ~[payload.jar:na]
i-e482a13c => ! at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:400) ~[payload.jar:na]
i-e482a13c => ! at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:327) ~[payload.jar:na]
i-e482a13c => ! at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:307) ~[payload.jar:na]
i-e482a13c => ! at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:200) ~[payload.jar:na]
i-e482a13c => ! at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:708) [payload.jar:na]
i-e482a13c => ! at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:642) [payload.jar:na]
i-e482a13c => ! at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:464) [payload.jar:na]
i-e482a13c => ! at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:141) [payload.jar:na]
i-e482a13c => ! at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:115) [payload.jar:na]
i-e482a13c => ! at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:102) [payload.jar:na]
i-e482a13c => ! at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:126) [payload.jar:na]
i-e482a13c => ! at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:139) [payload.jar:na]
i-e482a13c => ! at org.hibernate.engine.jdbc.internal.JdbcServicesImpl$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcServicesImpl.java:279) [payload.jar:na]
i-e482a13c => ! at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:124) [payload.jar:na]
i-e482a13c => ! at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111) [payload.jar:na]
i-e482a13c => ! at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234) [payload.jar:na]
i-e482a13c => ! at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206) [payload.jar:na]
i-e482a13c => ! at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1887) [payload.jar:na]
i-e482a13c => ! at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1845) [payload.jar:na]
i-e482a13c => ! at io.dropwizard.hibernate.SessionFactoryFactory.buildSessionFactory(SessionFactoryFactory.java:96) [payload.jar:na]
i-e482a13c => ! at io.dropwizard.hibernate.SessionFactoryFactory.build(SessionFactoryFactory.java:49) [payload.jar:na]
i-e482a13c => ! at io.dropwizard.hibernate.SessionFactoryFactory.build(SessionFactoryFactory.java:39) [payload.jar:na]
i-e482a13c => ! at io.dropwizard.hibernate.HibernateBundle.run(HibernateBundle.java:56) [payload.jar:na]
i-e482a13c => ! at io.dropwizard.hibernate.HibernateBundle.run(HibernateBundle.java:14) [payload.jar:na]
i-e482a13c => ! at io.dropwizard.setup.Bootstrap.run(Bootstrap.java:199) [payload.jar:na]
i-e482a13c => ! at io.dropwizard.cli.EnvironmentCommand.run(EnvironmentCommand.java:39) [payload.jar:na]
i-e482a13c => ! at io.dropwizard.cli.ConfiguredCommand.run(ConfiguredCommand.java:77) [payload.jar:na]
i-e482a13c => ! at io.dropwizard.cli.Cli.run(Cli.java:70) [payload.jar:na]
i-e482a13c => ! at io.dropwizard.Application.run(Application.java:80) [payload.jar:na]
i-e482a13c => ! at com.vertware.dms.DMSService.main(DMSService.java:65) [payload.jar:na]
i-e482a13c => WARN  [2016-04-17 02:06:44,078] org.hibernate.engine.jdbc.internal.JdbcServicesImpl: HHH000342: Could not obtain connection to query metadata : Communications link failure
i-e482a13c => 
i-e482a13c => The last packet successfully received from the server was 634 milliseconds ago.  The last packet sent successfully to the server was 631 milliseconds ago.
i-e482a13c => INFO  [2016-04-17 02:06:44,088] org.hibernate.dialect.Dialect: HHH000400: Using dialect: org.hibernate.dialect.MySQLInnoDBDialect
i-e482a13c => INFO  [2016-04-17 02:06:44,104] org.hibernate.engine.jdbc.internal.LobCreatorBuilder: HHH000422: Disabling contextual LOB creation as connection was null

Solution

  • The error message indicates an SSL certificate error. The default Boxfuse root certificates keystore does however include the RDS root certificate. Did you by any chance ship your own cacerts file which does not include that root certificate?