Java 如何解决该错误:“;无法分配连接,因为hostnameverifier无法验证主机名";

Java 如何解决该错误:“;无法分配连接,因为hostnameverifier无法验证主机名";,java,postgresql,amazon-ec2,heroku-postgres,glassfish-4.1,Java,Postgresql,Amazon Ec2,Heroku Postgres,Glassfish 4.1,当我尝试向我的AWS EC2实例发出一些请求时,我得到了一个错误“连接无法分配,因为我的\u postgresql\u数据库的\u dns\u无法由hostnameverifier PgjdbcHostnameVerifier验证”,在这种情况下我该怎么办 我在GlassFish4.1(一个war文件)中的AWS的EC2实例(一个标准的t2.micro)中部署了一个服务器。此项目在postgreSQL中调用Heroku的数据库服务器(该数据库不在AWS实例中)。我尝试更改安全组规则以接受post

当我尝试向我的AWS EC2实例发出一些请求时,我得到了一个错误“连接无法分配,因为我的\u postgresql\u数据库的\u dns\u无法由hostnameverifier PgjdbcHostnameVerifier验证”,在这种情况下我该怎么办

我在GlassFish4.1(一个war文件)中的AWS的EC2实例(一个标准的t2.micro)中部署了一个服务器。此项目在postgreSQL中调用Heroku的数据库服务器(该数据库不在AWS实例中)。我尝试更改安全组规则以接受postgreSQL入站和出站流量,但这不起作用

当我不发出请求时(只需键入dns地址、端口和war文件名应用程序,如:),就会显示Servlet响应,一个Hello World;当我在我的PC(localhost)上尝试时,我得到了成功的响应,所以我不认为这是服务器应用程序中的问题。可能是Heroku数据库或EC2实例中的一些配置

以下是Glassfish中server.logs文件的一些行:

[2019-04-06T04:03:45.933+0000] [glassfish 4.1] [INFO] [] [] [tid: _ThreadID=30 _ThreadName=Thread-8] [timeMillis: 1554523425933] [levelValue: 800] [[
  [EL Info]: 2019-04-06 04:03:45.932--ServerSession(1545400102)--EclipseLink, version: Eclipse Persistence Services - 2.6.1.v20150605-31e8258]]

[2019-04-06T04:03:45.963+0000] [glassfish 4.1] [SEVERE] [] [org.postgresql.ssl.PGjdbcHostnameVerifier] [tid: _ThreadID=30 _ThreadName=http-listener-1(4)] [timeMillis: 1554523425963] [levelValue: 1000] [[
  Server name validation failed: hostname ec2-107-22-163-8.compute-1.amazonaws.com does not match common name ip-10-0-63-18.ec2.internal]]

[2019-04-06T04:03:45.963+0000] [glassfish 4.1] [WARNING] [poolmgr.create_resource_error] [javax.enterprise.resource.resourceadapter.com.sun.enterprise.resource.allocator] [tid: _ThreadID=30 _ThreadName=http-listener-1(4)] [timeMillis: 1554523425963] [levelValue: 900] [[
  RAR5038:Unexpected exception while creating resource for pool { PoolInfo : (name=java:app/post-gre-sql_...), (applicationName=TamboServer-1.0-SNAPSHOT) }. Exception : javax.resource.spi.ResourceAllocationException: Connection could not be allocated because: The hostname ec2-107-22-163-8.compute-1.amazonaws.com could not be verified by hostnameverifier PgjdbcHostnameVerifier.]]

我希望能够将运行在EC2实例中的服务器连接到Heroku的数据库(实际上,它也是在AWS机器中分配的)。如果不是,我应该将数据库迁移到EC2实例吗?
提前感谢,如果我写了一些错误(我不是英语母语人士),请道歉。

Currentyl我删除了JDBC连接池中的参数
ssl
URL,并添加了
sslfactory=org.postgresql.ssl.NonValidatingFactory
how sugest response。这是一个暴力解决方案,因为允许“中间人”攻击,使其不安全,但我所做的一切都没有问题。

当作为客户端的应用程序尝试通过ssl建立连接,并且主机名与目标提供的证书上的主机名不匹配时,将调用Hostnameverifier,从而有机会使用自定义验证覆盖验证。这意味着您的服务器正试图通过安全连接访问数据库,但在数据库端使用的证书无效,并且没有覆盖defaul主机名验证程序。感谢您的快速响应。是的,问题出在SSL中。我只是删除JDBC连接池中的参数
ssl
URL,然后添加
sslfactory=org.postgresql.ssl.NonValidatingFactory
,how sugest response。现在服务器工作正常!但是现在,没有SSL是不安全的,我如何解决这个问题呢?只要您知道这一点:“提供一个SSLSocketFactory,它允许在不验证服务器证书的情况下进行SSL连接。这对某些应用程序来说更方便,但由于它允许“中间人”攻击,所以安全性较低。是的,我明白了。谢谢你的评论。