You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在OkHttp中配置证书以调用Starling沙箱API并解决证书路径异常

OkHttp 配置 Starling API 证书信任方案

1. hostname 参数填写规则

直接填写你要请求的 Starling API 的纯域名即可,不要带协议头、端口、路径后缀,例如沙箱环境填 api-sandbox.starlingbank.com,生产环境填对应官方域名。

2. sha256/ 前缀字符串的生成方法

你之前的报错是因为误填了证书原文,该值本质是证书公钥的SHA256哈希值做Base64编码后的结果,生成步骤如下:

  • 准备好你从 Starling 官方获取的证书文件(通常为 .pem 或 .cer 格式)
  • 在终端执行以下openssl命令(Windows系统需先安装openssl工具):
openssl x509 -in 你的证书文件路径.pem -pubkey -noout | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | openssl base64
  • 命令执行后会输出一串Base64编码字符串,在字符串前拼接 sha256/ 即可得到需要填入的pin值。

3. 完整配置示例

基础OkHttp配置

import okhttp3.CertificatePinner;
import okhttp3.OkHttpClient;

// 构建证书固定器
CertificatePinner starlingPinner = new CertificatePinner.Builder()
    // 替换为实际请求域名和生成的pin值
    .add("api-sandbox.starlingbank.com", "sha256/替换为你生成的哈希串==")
    .build();

// 注入到OkHttpClient实例
OkHttpClient client = new OkHttpClient.Builder()
    .certificatePinner(starlingPinner)
    .build();

Spring环境适配

如果是在Spring中使用,可将上述配置好的OkHttpClient实例注入到OkHttp3ClientHttpRequestFactory(用于RestTemplate)或ReactorClientHttpConnector(用于WebClient)中,即可全局生效。

注意事项

  • 若你拿到的是Starling的根CA或中间CA证书,建议钉CA证书的公钥哈希,后续目标域名更新叶证书时无需修改配置
  • 可添加多条pin规则做冗余,避免单证书过期导致请求全失败
  • 生产环境不要仅钉叶证书,避免证书轮换导致业务故障

内容的提问来源于stack exchange,提问作者bootlover123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:45:02