【问题标题】:WebSphere: change port of web service from default to 443WebSphere:将 Web 服务的端口从默认更改为 443
【发布时间】:2014-09-12 13:59:03
【问题描述】:

我已经使用这个例子创建了一个网络服务:

http://www.albeesonline.com/blog/2008/07/27/creating-a-webservice-using-rad-7/

当我调用 Web 服务来获取 WSDL 时,我使用如下 URL:

http://acme.com/storefront/services/InventoryInquiry?wsdl

WebSphere 使用一个带有如下 URL 的 WSDL 页面进行响应:

http://acme.com:9082/storefront/services/InventoryInquiry/wsdl/InventoryInquiry.wsdl

我希望 WebSphere 使用 SSL 和端口 443 进行响应,而不是使用 WebSphere 默认主机端口。

我尝试修改 WebSphere 控制台中的“提供 HTTP 端点 URL 信息”页面,以便应用程序使用“https://acme.com:443”作为“HTTP URL 前缀”,但 WebSphere 不使用它,即使在重新启动 WebSphere 之后也是如此。

如何配置 WebSphere,使其在响应 Web 服务请求时不使用默认端口?

我正在使用 WebSphere 6.1。

一些背景资料:

该服务包含在使用 Struts 作为其设计模式的 J2EE 应用程序中。 struts-config.xml 配置为在端口 80 和 443 上为应用程序提供服务。运行应用程序的 WAS 服务器位于 Apache Web 服务器的前端,该服务器通过负载平衡器将请求重定向到应用程序。

AWS 负载均衡器配置在四个独立的 WAS 服务器之间引导请求,每个服务器都提供应用程序的副本。每个 WAS 服务器都配置为将唯一的服务器 ID 字符串返回给用户。 AWS 使用此字符串来确定哪个 WAS 服务器将处理用户发出的后续请求。这对于由 Struts 处理的 J2EE 应用程序的部分都工作得很好,但是 Web 服务存在于该上下文之外。这似乎是 Web 服务使用 WAS 默认安全端口而不是 Struts 中定义的端口进行响应的原因。

我无法将 WAS 默认安全端口更改为 443,因为我不能在同一台服务器上拥有两个 WAS 实例同时监听端口 443。

【问题讨论】:

    标签: web-services ssl websphere-6.1


    【解决方案1】:

    一般而言,您有两种选择:
    1. 您可以安装 IBM Http Server (IHS) 和 WebSphere Plugin 来将请求路由到 WebSphere。 IHS 默认使用 80 和 443 端口。
    2. 更改 WebSphere 中的默认 SSL 端口 - 在 Server > Ports 中将 WC_defaulthost_secure 从 944x 更改为 443。

    您的问题还有第二个问题 - 您想使用 SSL 整个服务还是仅使用 WSDL 来保护?
    要对其进行配置,您需要定义安全约束以保护选定的 URI,或者将 HTTP 服务器配置为仅允许 SSL 访问服务。

    更新
    如果您前面有 Apache Web 服务器,那么安装并配置 WebSphere 插件(如果您当前使用 mod_proxy 或其他东西)。 WebSphere Plugin 可用于 Apache,并将跨多个 WAS 实例进行调度和负载平衡(如果它们是集群的,那么您可以从 Deployment Manager 自动生成插件,如果您有许多独立实例 - 您将需要合并插件,有一个工具为此)。
    您的应用使用 Struts 并不重要,您的 wsdl 仍然可以通过 Http 服务器和插件提供服务。
    对于重定向到 HTTPS,您需要从您的另一篇文章中解决该问题 - security-constraint in web.xml is not enforced,因为我认为它是相同的环境。

    【讨论】:

    • 我在帖子中添加了一些关于应用程序架构的附加信息。我已经有 Apache Web Server 来处理端口 80 和 443 上的请求。包含 Web 服务的应用程序使用 Struts 在端口 80 和 443 上提供页面,但不包括 Web 服务 URL,因为它们不使用 Struts。此外,由于我在同一服务器上的多个 WAS 实例之间对应用程序进行负载平衡,因此我无法将 WAS 的默认安全端口更改为 443。也许我需要对 Apache Web Server 配置或 web.xml 做一些事情。应用程序本身的xml?
    • "你需要合并插件,有一个工具"你指的是什么工具?
    • 实际上,“web.xml 中的安全约束未强制执行”帖子是针对在同一服务器上运行的单独 Web 应用程序。
    • @MichaelSobczak 是的,我确定。但如果你不相信我,这里是 v6.1 的链接,你可以自己轻松找到 - www-01.ibm.com/support/knowledgecenter/SSAW57_6.1.0/…
    • @MichaelSobczak 如果您不需要 80 端口,最简单的方法是在 Apache 中禁用 80 端口,否则您可以使用 Apache (wiki.apache.org/httpd/RedirectSSL) 或在 WAS 上重定向(使用 security-constraint -> CONFIDENTIAL正如你在另一篇文章中所做的那样)。
    猜你喜欢
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    • 2019-04-20
    相关资源
    最近更新 更多