语境
我需要在 Windows Server 2008 上的 IIS 7.5(http 端口 80,https 443)后面放置一个 Java 应用服务器(http 端口 8080,https 8181)。
脚步
我使用IIS ARR
了启用代理的模块,以便将一些请求路由到 Java 应用程序服务器。为此,我还制定了一些URL Rewrite
规则。使用http
,一切正常。
使用的规则规定,当请求的 URL 与 pattern 匹配时(MyAppContextRoot.+)
,要采取的操作是 Rewrite: http://localhost:8080/{R:0}
。
对于另一个使用 https 的应用程序,重写规则是:https://localhost:8181/{R:0}
。
为了路由 https 请求,我在某处读到我需要在 IIS 和 Java 之间共享相同的证书,因为 IIS 加密/解密请求/答案。如果我错了,请纠正我。
由于我仍处于开发阶段,我决定共享一个自签名证书。我已经创建了它,并使用以下方法SelfSSL7
导入了 java :keystore
keytool
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.com
并且https://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)。