【问题标题】:Java keystore from pfx certificate来自 pfx 证书的 Java 密钥库
【发布时间】:2012-06-06 02:00:41
【问题描述】:

上下文

我需要在 Windows Server 2008 的 IIS 7.5(http 端口 80,https 443)后面放置一个 Java 应用服务器(http 端口 8080,https 8181)。

步骤

我使用IIS ARR 模块启用代理,以便将一些请求路由到Java 应用程序服务器。为此,我还创建了一些URL Rewrite 规则。使用http,一切正常。

使用的规则规定,当请求的 URL 与模式 (MyAppContextRoot.+) 匹配时,要采取的操作是 Rewrite: http://localhost:8080/{R:0}

对于另一个使用 https 的应用程序,重写规则为:https://localhost:8181/{R:0}

为了路由 https 请求,我在某处读到我需要在 IIS 和 Java 之间共享相同的证书,因为 IIS 加密/解密请求/答案。如果我错了,请纠正我。

由于我仍处于开发阶段,我决定共享一个自签名证书。我已经用SelfSSL7 创建了它,我已经使用keytool 导入了java keystore

selfSSL7 /Q /T /I "Default web site" /N cn=myDomain.com /X /F MyCertificate.pfx /W myPassword

keytool -importkeystore -srckeystore C:\myPath\MyCertificate.pfx -srcstoretype pkcs12 -srcalias my -deststoretype jks -deststorepass myPassword -destalias MyAlias

问题

两个证书都各司其职:https://myDomain.comhttps://myDomain.com:8181 已启动并正在运行,但在尝试路由时,出现错误:

502 - Web server received an invalid response while acting as a gateway or proxy server.

There is a problem with the page you are looking for, and it cannot be displayed. When the Web server (while acting as a gateway or proxy) contacted the upstream content server, it received an invalid response from the content server.

但是,查看证书,在以下方面存在差异:颁发者、颁发者、有效性、签名算法、密钥大小。特别是SelfSSL7创建的算法是sha1RSA(1024 Bits key),keytool创建的算法是sha256RSA(2048 Bits key)。

【问题讨论】:

  • keytool -importkeystore 只会复制证书(和私钥)。如果您作为客户端连接时证书详细信息不同,则您可能尚未使用您认为的证书配置您的服务器。

标签: java encryption ssl certificate pfx


【解决方案1】:

听起来您正在尝试做的是反向代理设置,而不是重定向到 Java 服务器,在这种情况下,永远不应该直接访问 Java 服务器,而只能通过 IIS 访问。因此,它对客户端是“不可见的”(因此您甚至不应该看到具有不同端口的不同 URL)。听起来您的重写规则只是重定向(不是反向代理重写规则)。

  • 如果您不需要使用 SSL/TLS 保护 IIS 和 Java 容器之间的连接(仅从外部客户端到 IIS 的连接),则不需要为 Java 容器配置 SSL /TLS。 IIS 将成为 Java 容器的客户端,使用纯 HTTP。

  • 如果您希望使用 SSL/TLS 保护 IIS 和 Java 容器之间的连接,您需要证书对托管 Java 容器的主机有效,如 IIS 所见。这不太可能与 IIS 上使用的证书相同,因为 IIS 使用的证书是面向公众的证书,而用于 Java 容器的证书仅供内部使用(您可能会使用自签名证书或您自己的 CA,具体取决于 IIS 反向代理模块可以配置接受的内容)。

【讨论】:

  • 两台服务器之间不需要 SSL:它们确实在同一台物理机器上。正如您所指出的,我希望 Java 服务器对客户端不可见(本质上隐藏端口)。我已经看到启用代理达到了这个目标。我将使用重写规则更新我的问题
  • 在这种情况下,我看到如果用户键入 http://myDomain.com/myContextRoot/,则不会重定向到 https。在这种情况下如何强制重定向?
  • IIS 中的重定向规则应该会有所帮助。
猜你喜欢
  • 2017-02-03
  • 2011-04-06
  • 2014-03-11
  • 2014-02-12
  • 1970-01-01
  • 1970-01-01
  • 2018-08-06
  • 2013-01-02
  • 1970-01-01
相关资源
最近更新 更多