Получение 404 не найдено при вызове rest API с использованием https ssl

Пожалуйста, не могли бы вы помочь? Я создал на Java Rest 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 / share, и браузер показывает" Безопасный ", и я вижу, что используется правильный сертификат. Поэтому я не думаю, что это проблема портов Tomcat / брандмауэра или проблема с сертификатом. Поскольку мой браузер может загрузить файл WAR, используя ту же первую половину URL-адреса, это должно означать, что расположение файла войны в порядке.

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

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

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

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

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

Почему Postman просто не запускает 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>

person Think.Smart    schedule 19.05.2018    source источник
comment
Что вы видите в журналах сервера? Катлина и другие журналы? Что вы видите в сетевом мониторе Codename One? Если вы можете подключиться по https без порта, чтобы увидеть гифку, вам не следует использовать порт для SSL.   -  person Shai Almog    schedule 20.05.2018
comment
Обновление. Я перезапустил apache2 (/etc/init.d/apache2 restart), и ошибка изменилась. Затем сказал 404 Not Found in Postman and Browser. Это указывает на разрешения на чтение папки / webapps, я думаю, но не уверен. Итак, мы добавили эту строку в файл apache2.conf: Alias ​​/ ProjectName / var / lib / tomcat8 / webapps / ProjectName. Теперь я получаю ошибку разрешений 403. Я добавил базовый раздел ‹security-constraint› в свое приложение web.xml, но это не изменило ситуацию. Журналы не показывают ничего значимого. Любая помощь приветствуется   -  person Think.Smart    schedule 20.05.2018
comment
Еще одно изменение, которое не изменило ситуацию, - это добавление этого в apache2.conf: ‹Directory / var / lib / tomcat8 / webapps / MyProject› Индексы параметров FollowSymLinks AllowOverride all Allow from all ‹/Directory› Странно, когда я неоднократно отправляю Запрос на отдых с использованием почтальона, обычно он говорит 403 Запрещено, а иногда 404 Не найдено.   -  person Think.Smart    schedule 20.05.2018
comment
В apache.conf я настроил отладку LogLevel и заметил в моем журнале ошибок apache error.log, в котором были ошибки разрешения. Так что также поместите сюда ‹Местоположение /› Требовать все предоставленные ‹/Location›, и это устранило эти ошибки, но теперь журнал ошибок выдает AH00128: Файл не существует и указывает на полный запрос URL. Конечно, этого не существует, поскольку это параметр @Path внутри класса Rest. Все еще застряли.   -  person Think.Smart    schedule 20.05.2018
comment
Однажды у меня был тайм-аут в моем кодовом имени: одно приложение, работающее на симуляторе, и я возился с ConnectionRequest, думая, что что-то не так, и позже я понял, что это произошло из-за использования сервера для отправки почты перед возвратом ответа пользователю. Я отложил отправку письма и немедленно вернул ответ, это решило проблему тайм-аута для меня. Кстати, я использовал бэкэнд PHP.   -  person Diamond    schedule 20.05.2018
comment
Это проблема между моим проектом java rest API и настройкой Tomcat https. Какой-то конфликт. Почему никогда не бывает легко? Обновили основную ветку. Спасибо   -  person Think.Smart    schedule 20.05.2018
comment
Убедитесь, что ваши разрешения unix в каталоге, в котором вы развернули веб-приложение, верны и соответствуют пользователю.   -  person Shai Almog    schedule 21.05.2018
comment
Я дал 777 разрешений на каталог, но это не повлияло. Я создал поддельный подкаталог, за которым он был, и он перестал ошибаться в журналах. При выполнении вызова rest отображается не 404, а индексная html-страница. Итак, каталог войны доступен. Но проблема остается в том, что это не запускает остальные API. Я думаю, что это проблема из-за того, что tomcat не читает мои приложения web.xml или (раньше не было) context.xml. Я возился с этими файлами, но пока безуспешно. :(   -  person Think.Smart    schedule 22.05.2018


Ответы (1)


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

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

person Think.Smart    schedule 23.05.2018