使用 https ssl 调用 rest API 时找不到 404

Getting 404 not found when calling rest API using 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 也给出了 'Connection took too long to respond'。 我没有对 Rest API 项目或我在两次调用之间传递给它的 HTTP 请求 header 进行任何更改。为什么现在不能读了?

禁用防火墙没有任何区别。使用 443 端口没有区别,使用 8443 在邮递员中给出 'Could not get any response'。

我已正确安装第 3 方证书。我知道这一点,因为在我的浏览器中,如果我 运行 只是“https://www.mydomain.co.uk/MyProject" (no port) it downloads the WAR file. I can also view a test GIF file "https://www.mydomain.co.uk/test.gif”,它在我的 Tomcats /usr/share 中是正确的,并且浏览器显示 'Secure' 并且我可以看到正在使用正确的证书。 所以我认为这不是 Tomcat ports/firewall 问题或证书问题。 由于我的浏览器可以使用 URL 的相同第一半下载 WAR 文件,那么这一定意味着 war 文件的位置是正确的。

这似乎与 Rest API 的实际调用有关,正如我所说,如果我执行“http://www.mydomain.co.uk:8080/MyProject/...”

,它会正常工作

差不多就是Postman或者app调用API的方式了。仅供参考,我唯一的相关请求 header 我正在传递它 'Content-Type' = 'application/json'。 非常感谢

更新 2018 年 5 月 20 日 当前位置: 当我发出 URL 呼叫我的休息 api “https://www.mydomain.co.uk/MyProject/some_path_params”(使用 http 和 8080 工作正常)时,我在所有呼叫位置(例如邮递员)收到“404 未找到” ).

查看 apache2 error.log 它说 'AH00128: File does not exist: /var/lib/tomcat8/webapps/MyProject/some_path_params'。 这是正确的,因为文件不存在,但这是因为终结点是 MyProject。

有谁知道为什么它试图找到 URL 中表示的文件,而不是调用其余 API 并进入 java class以 '@Path("/some_path_params")' 开头?

为什么 Postman 在 https 模式下不只是 运行 其余 API?

如果我输入 https://www.mydomain.co.uk/MyProject,它会显示文件结构,所以我可以访问该目录。

顺便说一句,当我重新启动 apache2 时,日志确认 TLS 证书已正确加载。

如果相关,我已将其包含在 Java 项目的 web.xml 中:

<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>

经过两周的调整终于解决了这个问题。我的解决方案是反对这个电话

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