Получение 404 не найдено при вызове rest API с использованием https ssl - PullRequest
0 голосов
/ 19 мая 2018

Пожалуйста, вы можете помочь.Я создал в Java API отдыха и экспортировал файл WAR на мой облачный сервер Tomcat 8.Я смог получить доступ к нему и нормально использовать его в своем приложении Codenameone в течение нескольких месяцев, используя http://www.mydomain.co.uk:8080/MyProject/...

Но теперь я применил TLS \ SSL к своему серверу (приобрел сертификат Comodo) и теперь, используя мое приложениеили Почтальон получает тайм-аут соединения, когда я использую аналогичный URL-вызов https://www.mydomain.co.uk/MyProject/... Идентифицированный URL-адрес, вставленный в мой браузер, также выдает «Соединение заняло слишком много времени, чтобы ответить».Я не внес никаких изменений в проект Rest API или заголовки HTTP-запросов, которые я передаю ему между двумя вызовами.Почему его нельзя прочитать сейчас?

Отключение брандмауэра не имеет значения.Использование 443 портов не имеет значения, а использование 8443 дает «Не удалось получить ответ» в почтальоне.

У меня правильно установлен сторонний сертификат.Я знаю это, потому что в моем браузере, если я запускаю просто "https://www.mydomain.co.uk/MyProject" (без порта), он загружает файл WAR. Я также могу просмотреть тестовый файл GIF" https://www.mydomain.co.uk/test.gif", который находится в моем Tomcats / usr/ поделиться правильно, и браузер показывает «Безопасный», и я вижу, что используется правильный сертификат.Поэтому я не думаю, что это проблема портов / межсетевого экрана Tomcat или проблема с сертификатом.Так как мой браузер может загрузить файл WAR, используя ту же первую половину URL, то это должно означать, что местоположение файла войны в порядке.

Кажется, что-то не так с фактическим вызовом Rest API, которыйКак я уже сказал, работает нормально, если я это сделаю "http://www.mydomain.co.uk:8080/MyProject/..."

Почти похоже, что Postman или приложение вызывают API. К вашему сведению, мой единственный соответствующий заголовок запроса, который я передаю, - Content-Type'=' application / json '. Большое спасибо

ОБНОВЛЕНИЕ 20/05/18 Текущая позиция: когда я выпускаю URL-вызов для моего остальных API "https://www.mydomain.co.uk/MyProject/some_path_params" (которыйработает нормально, используя http и 8080) я получаю '404 Not Found' во всех вызывающих местах (например, почтальон).

Глядя на файл apache2 error.log, он говорит: «AH00128: Файл не существует: / var/ Библиотека / tomcat8 / WebApps / MyProject / some_path_params.Это правильно, поскольку файлы не существуют, но это потому, что конечной точкой является MyProject.

Кто-нибудь знает, почему он пытается найти файл, представленный в URL-адресе, вместо вызова остальных API и перехода в класс java, который начинается с '@Path ("/ some_path_params")'?

Почему Почтальон просто не запускает Rest API в режиме https?

Если я введу https://www.mydomain.co.uk/MyProject,, он отображает файловую структуру, поэтому у меня есть доступ к этомукаталог.

Кстати, когда я перезапускаю apache2, журналы подтверждают, что сертификат TLS загружен правильно.

Если это уместно, я включил это в web.xml проекта Java:

<security-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>

В моем apache.conf есть следующие разделы:

<VirtualHost *:443>
 SSLEngine on
 SSLCertificateFile /etc/ssl/certs/mydomain_co_uk.crt
 SSLCertificateKeyFile /etc/ssl/private/www.mydomain.co.uk.key
 SSLCertificateChainFile /etc/ssl/certs/mydomain_co_uk.ca-bundle
 ServerName www.mydomain.co.uk
 Alias /MyProject "/var/lib/tomcat8/webapps/MyProject"

<Location />
Require all granted
</Location>

1 Ответ

0 голосов
/ 24 мая 2018

Наконец-то решили проблему через 2 недели настройки.Мое решение против этого звонка

https://stackoverflow.com/posts/comments/87979638

...