首页 > 解决方案 > 如何在 okhttp 上添加证书

问题描述

我正在 Spring 中构建一个应用程序。该应用程序应该对 Starling 的沙盒/开发人员公开的 API 进行一些 REST 调用。

我正在尝试调用 Starlings api,但由于它在 HTTPS 下,我得到以下信息:

sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

阅读 Starlings 文档后,它确实提供了我需要的证书以及以下说明:

您需要在开发过程中嵌入证书并将其与我们的域相关联。然后,在与我们进行 SSL 质询期间,您的应用程序应使用证书验证我们的身份。几乎所有语言和平台都可以使用执行此操作的库,例如 iOS 上的 TrustKit 和 Java 上的 okhttp。

我正在使用 okhttp 拨打电话,但我不知道如何让 okhttp 接受证书。我确实遇到了这个问题并尝试实现它,但不确定要为主机名的值添加什么。在答案中: .add(hostname, "sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=")... sha56/AAAAA 应该是证书的内容吗?

编辑:我尝试将证书的内容放在“sha56/AAA”区域并得到以下信息:

java.lang.IllegalArgumentException:引脚必须以“sha256/”或“sha1/”开头:MIIGQDCCBSigAwIBAgIMA/4EOE5OkRQN7SNQMA0GCSqGSIb3DQEBCwUAMFAxCzAJ

所以我猜我需要以某种方式使用证书生成sha?

标签: javaspringrestssl

解决方案


推荐阅读