【问题标题】:Webstart https: works with server on certificate and not on loadbalancerWebstart https:与证书上的服务器一起使用,而不是在负载均衡器上使用
【发布时间】:2013-01-16 22:06:30
【问题描述】:

我正在尝试为我的 Java webstart 应用程序创建一个 https 安全连接。我所做的只是将我的 Tomcat 配置为使用证书,然后就完成了。我可以这样做

“https://nsjns:8443/abc/xyz.jnlp”它下载了我的应用程序并且运行良好。

对于生产,我们购买了一个证书,该证书保存在负载均衡器上,而实际的 Web 服务器位于负载均衡器后面。如果我使用浏览器,我可以看到服务器并可以通过在浏览器中输入 url 来下载我的 jnlp 文件。但是,由于出现以下异常,我无法使用 Java webstart 执行 jnlp 文件。

Java.io.IOException: Server returned HTTP response code: 503 for URL: "http://test.tec.com/abc.jnlp"
                at sun.reflect.GeneratedConstructorAccessor13.newInstance(Unknown Source)
                at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
                at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
                at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1674)
                at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1672)
                at java.security.AccessController.doPrivileged(Native Method)
                at sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1670)
                at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1243)
                at com.sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source)
                at com.sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source)
                at com.sun.deploy.net.BasicHttpRequest.doGetRequest(Unknown Source)
                at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
                at com.sun.deploy.net.DownloadEngine._downloadCacheEntry(Unknown Source)
                at com.sun.deploy.cache.ResourceProviderImpl.getResourceCacheEntry(Unknown Source)
                at com.sun.deploy.cache.ResourceProviderImpl.getResourceCacheEntry(Unknown Source)
                at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
                at com.sun.javaws.Launcher.updateFinalLaunchDesc(Unknown Source)
                at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
                at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
                at com.sun.javaws.Launcher.launch(Unknown Source)
                at com.sun.javaws.Main.launchApp(Unknown Source)
                at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
                at com.sun.javaws.Main.access$000(Unknown Source)
                at com.sun.javaws.Main$1.run(Unknown Source)
                at java.lang.Thread.run(Thread.java:722)
Caused by: java.io.IOException: Server returned HTTP response code: 503 for URL: http://test.tec.com/abc.jnlp
                at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1625)
                at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:468)
                ... 17 more

它将我的网址从 https 解析为 http。我对这一切都很陌生。请帮助我提出您的想法和建议。我错过了什么?

【问题讨论】:

    标签: java https ssl-certificate load-balancing java-web-start


    【解决方案1】:

    不太可能与您的证书有关。尝试在 webstart URL 中使用 IP 地址而不是主机名。

    您没有说明您在哪个平台上运行 webstart,但如果 IP 地址有效,则启动 webstart 控制面板:javaws -viewer 并转到 Java 选项卡上的网络设置。假设它还没有这样说,请选择直接连接(即无代理)并告诉我们它是否在此之后工作。

    【讨论】:

    • 意识到问题所在。这是因为 Tomcat 无法理解负载均衡器正在发送 HTTP 流。 velocityreviews.com/forums/…
    • 那好吧。您在那里引用的有趣线程。在我们的例子中,Tomcat 也是 Web 服务器。我们将应用程序安装到新主机上,并获得了与您完全相同的堆栈跟踪。事实证明,这台主机虽然仍然是内部主机,但位于不同的域上,并且公司的代理设置对其进行了不同的处理。所以在我们的例子中,读取代理服务器而不是负载均衡器,但同样的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-04
    • 2013-03-13
    • 2013-09-16
    • 2020-10-22
    • 1970-01-01
    相关资源
    最近更新 更多