来自pfx证书的Java密钥库

时间:2012-05-31 19:20:09

标签: java encryption ssl certificate pfx

上下文

我需要在Windows Server 2008上将IIS应用程序服务器(http端口8080,https 8181)放在IIS 7.5(http端口80,https 443)之后。

步骤

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

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

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

为了路由https请求,我已经读过一些需要在IIS和Java之间共享相同证书的地方,因为IIS会加密/解密请求/答案。如果我错了,请纠正我。

由于我还处于开发阶段,我决定分享自签名证书。我使用SelfSSL7创建了它,并使用keystore导入了java 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.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位密钥),keytool创建的算法是sha256RSA(2048位密钥)。

1 个答案:

答案 0 :(得分:3)

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

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

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