rest - grails-RestClientBuilder

标签 rest grails curl

我正在使用当前版本的 rest client builder 插件。我通过 curl 测试了 uri:

curl --user username:password https://localhost:8085/rest/api/latest/plan.json?os_authType=basic

我得到了预期的 json 作为返回。当我尝试使用这样的插件将其转换为 grails 时:

RestBuilder rb = new RestBuilder()
    def response = rb.get("https://localhost:8085/rest/api/latest/plan.json?os_authType=basic"){     
            auth 'username', 'password'
        }

response.json instanceof JSONObject

我收到这个错误:

sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

为什么它在 curl 中工作而不是在插件中工作?我如何让它发挥作用?

谢谢!

最佳答案

您需要将根证书添加到受信任的存储中。

http://docs.oracle.com/javase/tutorial/security/toolsign/rstep2.html


将证书导入为受信任的证书

在您授予签名代码读取指定文件的权限之前,您需要将 Susan 的证书作为受信任的证书导入您的 keystore 中。

假设你收到了来自 Susan 的邮件

  • 已签名的 JAR 文件 sCount.jar,其中包含 Count.class 文件,以及
  • 文件 Example.cer,其中包含与用于签署 JAR 文件的私钥相对应的公钥的公钥证书。

即使您创建了这些文件并且它们实际上并未传输到任何地方,您也可以模拟成为创建者和发送者 Susan 之外的其他人。假装你现在是雷。作为 Ray,您将创建一个名为 exampleraystore 的 keystore ,并将使用它将证书导入到别名为 susan 的条目中。

每当您使用 keytool 命令指定一个尚不存在的 keystore 时,就会创建一个 keystore 。因此,我们可以创建 exampleraystore 并通过单个 keytool 命令导入证书。在命令窗口中执行以下操作。

  1. 转到包含公钥证书文件 Example.cer 的目录。 (您实际上应该已经在那里了,因为本课假设您自始至终都在一个目录中。)
  2. 在一行中输入以下命令:

    keytool -import -别名苏珊 -file Example.cer -keystore exampleraystore

由于 keystore 尚不存在,将创建它,并提示您输入 keystore 密码;输入您想要的任何密码。

keytool 命令将打印出证书信息并要求您对其进行验证,例如,将显示的证书指纹与从另一个(受信任的)信息源获得的指纹进行比较。 (每个指纹都是一个相对较短的数字,可以唯一且可靠地标识证书。)例如,在现实世界中,您可能会调用 Susan 并询问她的指纹应该是什么。她可以通过执行命令获取她创建的Example.cer文件的指纹

keytool -printcert -file Example.cer

如果她看到的指纹与 keytool 报告给您的指纹相同,则证书在传输过程中没有被修改。在这种情况下,您可以让 keytool 继续在 keystore 中放置受信任的证书条目。该条目包含文件 Example.cer 中的公钥证书数据,并分配了别名 susan

关于rest - grails-RestClientBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23226817/

相关文章:

java - 为 Spring Web 服务分离 REST API 和实现

java - 第三方休息服务的单元测试

java - 关于 Grails 服务类 Singleton 属性

php - 使用 cURL 执行 SOAP

javascript - RESTful HTTP 网络的最佳 Javascript 框架

node.js - 连接两个 Nodejs REST API 服务器的最佳方法

tomcat - 如何确保 Tomcat6 在 Windows 上读取 CATALINA_OPTS?

grails - 无法延迟初始化角色 : website. User.purchasedProducts 的集合,无法初始化代理 - 无 session

web-services - 如何在没有网络的机器上安装postman?

cURL 和包含冒号的密码