请帮忙。我在Java中创建了一个Rest API并将WAR文件导出到我的云Tomcat 8服务器。我已经能够使用http://www.mydomain.co.uk:8080/MyProject/在我的Codenameone应用程序中访问和使用它好几个月...
但我现在已经将TLS \ SSL应用到我的服务器(购买了Comodo证书),现在,当我使用类似的URL调用https://www.mydomain.co.uk/MyProject/时,使用我的应用程序或Postman获得连接超时... 在我的浏览器中粘贴的相同网址也会让“连接”花费太长时间才能回复“#”。 我没有对Rest API项目或我在2次调用之间传递给它的HTTP请求标头进行任何更改。为什么现在不能读它?
禁用防火墙没有任何区别。使用443端口没有区别,使用8443给出了“无法得到任何响应”#39;在邮递员。
我已正确安装了第三方证书。我知道这个,因为在我的浏览器中,如果我只运行" https://www.mydomain.co.uk/MyProject" (没有端口)它下载WAR文件。我还可以查看测试GIF文件" https://www.mydomain.co.uk/test.gif"这是在我的Tomcats / usr /正确共享,浏览器显示'安全'我可以看到正在使用正确的证书。 所以我不认为这是Tomcat端口/防火墙问题或证书问题。 由于我的浏览器可以使用相同的URL的前半部分下载WAR文件,因此必须表明war文件的位置正常。
这似乎与Rest API的实际调用有关,正如我所说,如果我做的话,它可以正常工作" http://www.mydomain.co.uk:8080/MyProject/ ..."
几乎似乎是Postman或应用程序调用API的方式。仅供参考,我唯一相关的请求标题我正在传递它'内容类型' =' application / json'。 非常感谢
更新20/05/18 当前位置: 当我向我的休息api" https://www.mydomain.co.uk/MyProject/some_path_params"发出URL调用时(使用http和8080可以正常工作)我得到了一个“未找到的404”#39;在所有呼叫场所(例如邮递员)。
查看apache2 error.log,它说' AH00128:文件不存在:/ var / lib / tomcat8 / webapps / MyProject / some_path_params'。 这是正确的,因为文件不存在,但这是因为端点是MyProject。
有谁知道为什么它试图找到URL中表示的文件,而不是调用其余的API并进入以' @Path开头的java类(" / some_path_params" )' ?
为什么赢得邮差只是在https模式下运行Rest 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>