java - 使用 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");
}
有人可以详细说明上述内容吗?
解决方案
能够解决上述问题,首先是我尝试在 base64 中编码的 p12 证书是 utf-8 编码,这是错误的,应该从 HEXADECIMAL 转换为 base64。
推荐阅读
- javascript - 如何在 javascript 对象中查找键名的长度而不是内容的长度
- html - 带有 POST 的 REST 调用不显示响应消息
- python-3.x - For循环,追加新值
- azure-cosmosdb - MongoDB API 中的存储过程:Azure Cosmos DB
- c# - 迭代地从二叉搜索树中删除一个节点
- python - 从 csv 到二进制格式的转换异常减小了文件大小
- functional-programming - 如何在 Racket 中编写一个不带条件填充数字的函数?
- python - 是否可以将图像直接放入python程序
- ubuntu - 闭包编译器在 Ubuntu 中缺少 ECMASCRIPT6 选项
- python - Jupyter Notebook 错误 Traceback(最近一次调用最后一次):