[sslmode = verify-ca后无法验证主机名

问题描述 投票:0回答:1

我尝试连接我的RDS实例,并且我不希望SSL证书检查主机名。到目前为止,我知道使sslmode = verify-ca不会检查主机名,但是出于某种原因。下面是堆栈跟踪,以获取更多详细信息

[Nov 20,2019 6:06:11 PM org.postgresql.Driver connect严重:连接错误:org.postgresql.util.PSQLException:无法验证主机名。在org.postgresql.ssl.MakeSSL.convert(MakeSSL.java:93)在org.postgresql.core.v3.ConnectionFactoryImpl.enableSSL(ConnectionFactoryImpl.java:391)在org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:162)在org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)在org.postgresql.jdbc.PgConnection。(PgConnection.java:195)在org.postgresql.Driver.makeConnection(Driver.java:452)在org.postgresql.Driver.connect(Driver.java:254)在amazon.jdbc.driver.spi.PostgresqlConnectionProvider.getConnection(PostgresqlConnectionProvider.java:85)在amazon.cj.dbaccess.FallbackWorker.iteratePasswordStore(FallbackWorker.java:101)在amazon.cj.dbaccess.FallbackWorker.getConnection(FallbackWorker.java:59)在amazon.cj.dbaccess.CacheController.getConnection(CacheController.java:153)在amazon.jdbc.driver.SecureDriver.connect(SecureDriver.java:174)在org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:307)在org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:200)在org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:728)在org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:662)在org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:480)在org.apache.tomcat.jdbc.pool.ConnectionPool。(ConnectionPool.java:154)在org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:115)在org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:102)在org.apache.tomcat.jdbc.pool.DataSourceFactory.createDataSource(DataSourceFactory.java:559)在org.apache.tomcat.jdbc.pool.DataSourceFactory.getObjectInstance(DataSourceFactory.java:244)在org.apache.naming.factory.FactoryBase.getObjectInstance(FactoryBase.java:94)在javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321)在org.apache.naming.NamingContext.lookup(NamingContext.java:848)在org.apache.naming.NamingContext.lookup(NamingContext.java:158)在org.apache.naming.NamingContext.lookup(NamingContext.java:835)在org.apache.naming.NamingContext.lookup(NamingContext.java:172)在org.apache.catalina.core.NamingContextListener.addResource(NamingContextListener.java:1091)在org.apache.catalina.core.NamingContextListener.createNamingContext(NamingContextListener.java:670)在org.apache.catalina.core.NamingContextListener.lifecycleEvent(NamingContextListener.java:258)在org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:95)在org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)在org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5213)在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)在org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:753)在org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:729)在org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)在org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:976)在org.apache.catalina.startup.HostConfig $ DeployWar.run(HostConfig.java:1853)在java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511)在java.util.concurrent.FutureTask.run(FutureTask.java:266)在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624)在java.lang.Thread.run(Thread.java:748)

数据库登录失败url:jdbc:postgresql://:8194 / fa_rhythm_db_dev?ssl = true; sslmode = verify-ca; sslrootcert = / apollo / env / RhythmTomcatBase / certs / rds-combined-ca-bundle.pem模块名称:空属性:{sslrootcert = / apollo / env / RhythmTomcatBase / certs / rds-combined-ca-bundle.pem} @驱动程序:class amazon.jdbc.driver.SecureDriver网址:jdbc:amazon:postgresql:// hostname:8194 / fa_rhythm_db_dev?ssl = true; sslmode = verify-ca; sslrootcert = / apollo / env / RhythmTomcatBase / certs / rds-combined-ca-bundle.pem数据库:fa_rhythm用户:pega模块:空属性:{}

ssl ssl-certificate postgresql-9.5
1个回答
0
投票

如果参数sslmode设置为verify-ca,则libpq将通过检查证书链(直至受信任的证书颁发机构(CA))来验证服务器是否可信。如果sslmode设置为verifyfull,libpq还将验证服务器主机名是否与其证书匹配。如果无法验证服务器证书,则SSL连接将失败。建议在大多数对安全性敏感的环境中使用“完全验证”。

documentation开始

[sslmode=require,如果您明确知道自己正在连接到正确的主机并信任所述主机,则可以使用

© www.soinside.com 2019 - 2024. All rights reserved.