我们正尝试让 Play 设置与我们的内部 CRM 对话。我们之前所有的应用程序都是用一个过分杀伤力的 JSF 框架 (ICEfaces) 编写的——但它们在与我们的 CRM 对话时运行良好,因为 JSF 应用程序部署在一个 glassfish 盒子上,我们在其中安装了 glassfish 能够与之通信的证书我们的 CRM 网络服务。
现在我们正试图让 play 做同样的事情,但我们遇到了一些困难,因为我们想在 netty 上运行 play 应用程序。我们如何将证书导入 keystore (或类似库)以便它们可以与我们的 CRM 通信?由于 CRM 是我们公司内部的,因此证书是自签名的,并根据需要分发。
我已经在 Play 配置文件中尝试了以下内容 - 但我不确定这个,因为这些配置属性似乎更多地用于 Play 服务器本身,而不是 Play 应用程序与其他服务进行通信。
# Keystore
trustmanager.algorithm=jks
ssl.KeyManagerFactory.algorithm=SunX509
keystore.algorithm=jks
keystore.password=changeit
keystore.file=conf/cacerts.jks
我们的一位其他开发人员能够让它工作,但我们不得不将它直接放在我们的代码中,这并不理想。
System.setProperty("javax.net.ssl.trustStore", "C:/webapps/playapp1/cacerts.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
System.setProperty("javax.net.ssl.keyStoreType", "jks");
System.setProperty("javax.net.ssl.keyStore", "C:/webapps/playapp1/keystore.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "changeit");
请注意,我们的 CRM 构建了一个 jar 文件,我们将其放入 JSF 或 Play 为我们包装网络服务的应用程序,因此我们不必为每个服务构建客户端代码(类似于您下载的 jar例如,Amazon 的 S3 服务)。该服务 jar 在下面使用 Jersey 通过 XML/Rest 与我们的服务进行通信。当我们不使用 SSL 时,它在 Play Framework 中工作得很好。
最佳答案
您使用的是什么版本的游戏? 我知道我实际上必须重新编译 playframework,因为它禁用了安全支持。 但我认为那是 1.1 版
关于java - Play Framework : Keystore for internal web services,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10609019/