Как устранить ошибку: «Не удалось выделить соединение, так как не удалось проверить имя хоста с помощью hostnameverifier» - PullRequest
0 голосов
/ 06 апреля 2019

Когда я пытаюсь сделать какой-то запрос к моему экземпляру AWS EC2, я получаю сообщение об ошибке «Невозможно выделить соединение, поскольку my_dns_of_postgresql_database не может быть проверен с помощью hostnameverifier PgjdbcHostnameVerifier», что я могу сделать в этом случае?

Я развернул сервер в Glassfish 4.1 (файл войны) в экземпляре AWS для EC2 (стандартный t2.micro).Этот проект выполняет вызовы сервера базы данных Heroku в postgreSQL (база данных отсутствует в экземпляре AWS).Я пытался изменить правила группы безопасности, чтобы принимать входящий и исходящий трафик postgreSQL, но это не работает.

Когда я не делаю запрос (просто набираю адрес DNS, имя порта и имя файла приложения войны - как: http://ec2 -2-81-22-142.compute-1.amazonaws.com: 8080 / TamboServer-1.0-SNAPSHOT / ) показывает ответ сервлета, Hello World;и когда я пробую это на моем ПК (localhost), я получаю успешный ответ, поэтому я не думаю, что это проблема в серверном приложении.Может быть, какая-то конфигурация в базе данных Heroku или экземпляре EC2.

Вот несколько строк файла server.logs в Glassfish:

[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?Заранее спасибо и извините, если я сделал несколько ошибок в написании (я не являюсь носителем английского языка)

1 Ответ

1 голос
/ 07 апреля 2019

На самом деле я удаляю URL-адрес параметра ssl в моем пуле соединений JDBC и добавляю sslfactory=org.postgresql.ssl.NonValidatingFactory насколько лучше этот ответ.Это решение грубой силы, потому что позволяет «человеку посередине» атаковать, что делает его небезопасным, как говорится в документации , но это плохо для того, что я делаю.

...