【问题标题】:Tomcat 8 SSL with ArcGIS serverTomcat 8 SSL 与 ArcGIS 服务器
【发布时间】:2015-10-22 09:17:16
【问题描述】:

我正在尝试让一个在 Apache Tomcat 8 上运行的 Web 应用程序来联系一个使用自签名证书运行 ArcGIS Server 的 IIS 服务。

我已经在 IIS 中为 ArcGIS 服务器配置了一个自签名证书,并且可以正常工作,但是我无法从 Tomcat 中的 Web 应用程序联系该服务。

【问题讨论】:

  • ArcGIS 是 Tomcat 前面的 Web 服务器,还是 ArcGIS 是部署在 Tomcat 上的 Web 应用程序?
  • arcgis 服务器是在带有 SSL 的 IIS 中运行的服务器。在 tomcat 中运行需要使用 ssl 与 arcgis 服务器通信的应用程序。
  • 所以您已经可以通过 HTTPS 访问 ArcGIS,对吧?您希望 Tomcat 使用 IIS 的自签名证书联系 ArcGIS,而您的 Java Web 应用程序抱怨证书是自签名的?
  • 是的,我可以通过 HTTPS 访问。问题是我无法将 Apache Tomcat 配置为使用自签名证书与 Arcgis 通信,我在认证时出现错误。

标签: tomcat ssl arcgis arcgis-server


【解决方案1】:

最简单的方法是使用 JDK 的 keytool 实用程序将自签名证书添加到运行 Tomcat 的 JRE 的信任库中。信任库是 Java 密钥库,在本例中是 /path/to/java/lib/security 中名为 cacerts 的文件。这是命令:

$ keytool -import -alias mycert -file /path/to/cert.cer -keystore /path/to/java/lib/security/cacerts

它将向您询问信任库的密码。 JRE 信任库的默认密码是changeit

注意事项:

  • 如果您将证书添加到 JRE 的信任存储区,则使用该 JRE 运行的每个应用程序都将信任该证书。
  • 如果您升级 JRE 或安装新的 JRE,其信任存储区将不包含证书,因此您必须记住将证书添加到新 JRE 的信任存储区。

【讨论】:

  • +1 记住 JRE 升级需要您重新导入证书。很容易忘记这一点。
  • 感谢您的回答,它运行良好。非常感谢。
【解决方案2】:

不幸的是,这实际上与 Tomcat 本身没有任何关系,因为 Tomcat 并没有建立从您的 Web 应用程序到 ArcGIS 服务器的 HTTP 连接。无论您使用什么组件来访问其他服务器,都需要知道可以信任该证书。

您需要将服务器的(公共)证书导入 Java 密钥库(称为“信任库”,因为您信任其中的密钥而不是存储私钥),并告诉任何组件(http-client、 HttpURLConnection 等)在进行传出连接时使用该信任存储。

如果您只有一个运行 tomcat 的 Web 应用程序,则可以使用以下系统属性为整个 JVM 设置该信任库:

javax.net.ssl.trustStore (file path to the trust store)
javax.net.ssl.trustStorePassword (the password to the trust store)

如果你必须单独配置Web应用程序,你最好希望你使用的组件(例如http-client)支持轻松设置信任存储,因为自己编写代码需要几十行Java代码容易出错,什么都行不通。

【讨论】:

    猜你喜欢
    • 2016-10-20
    • 2017-05-19
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多