首页 > 解决方案 > 使用 java 的密钥库格式无效

问题描述

我正在尝试向我们的一位客户发出发布请求,并将证书作为其安全性的一部分。

我尝试在邮递员中对其进行测试,就像通常在邮递员设置上附加证书然后能够向他们的 api 发出发布请求一样。

现在我的问题是当我在我们用java构建的平台上执行请求时遇到这个错误

java.base/sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:664) java.base/sun.security.util.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:222) java.base/java.security.KeyStore。加载(KeyStore.java:1479)

在测试环境中,他们不需要密码,因此为空。

    try (InputStream inputStream = new ByteArrayInputStream(p12Cert))
    {
        KeyStore keyStore = KeyStore.getInstance("jks");
        keyStore.load(inputStream, null);

我从 javakeystore 跟踪了 engineLoad 方法。

private static final int MAGIC = 0xfeedfeed;
private static final int VERSION_1 = 0x01;
private static final int VERSION_2 = 0x02;
        if (xMagic!=MAGIC ||
            (xVersion!=VERSION_1 && xVersion!=VERSION_2)) {
            throw new IOException("Invalid keystore format");
        }

有人可以详细说明上述内容吗?

标签: javakeystore

解决方案


能够解决上述问题,首先是我尝试在 base64 中编码的 p12 证书是 utf-8 编码,这是错误的,应该从 HEXADECIMAL 转换为 base64。


推荐阅读