gpt4 book ai didi

java - 从使用 keytool 创建的文件在 osx lion 上加载 keystore

转载 作者:搜寻专家 更新时间:2023-11-01 03:59:12 24 4
gpt4 key购买 nike

我有一个 keystore ,其中包含由以下命令生成的 key 对:

keytool -genkeypair -v -alias test-agent -keypass test-agent -storepass 123456.ABC -keystore test-agent.keystore -storetype JKS

我填写了证书的请求信息,并且正确生成了带有 key 对的商店。

以下命令:

keytool -list -keystore test-agent.keystore -storepass 123456.ABC -storetype JKS

返回:

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

test-agent, Jul 13, 2012, PrivateKeyEntry,
Certificate fingerprint (MD5): 7B:8F:D7:25:FF:34:D0:EF:44:87:46:E5:BF:18:C6:BF

现在我将 keystore 文件添加到我的构建路径并尝试使用在 OSX Lion 上运行的以下 java 代码加载它:

public void loadKeyStore() {
try {
final Provider p = Security.getProvider("SUN");
final KeyStore keystore = KeyStore.getInstance("JKS",p);

final InputStream keyStoreInStream = this.getClass().getClassLoader().getResourceAsStream("test-agent.keystore");
if ( keyStoreInStream == null ) throw new RuntimeException("No keystore found!");

final char[] password = "123456.ABC".toCharArray();
try {
keystore.load(keyStoreInStream, password);
} catch (Exception e) {
log.error(String.format("Security library error! [%s]",e.getCause()),e);
}
} catch (KeyStoreException e) {
log.error("Can't initialize security library!",e);
}
}

抛出以下异常:

java.io.IOException: Invalid keystore format
at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:633)
at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:38)
at java.security.KeyStore.load(KeyStore.java:1185)

我已经尝试使用 PKCS12(为 keytool 和代码中设置,分别在这种情况下提供者应该是 SunJSSE),这导致另一个异常:

java.io.IOException: DerInputStream.getLength(): lengthTag=111, too big.
at sun.security.util.DerInputStream.getLength(DerInputStream.java:544)
at sun.security.util.DerValue.init(DerValue.java:347)
at sun.security.util.DerValue.<init>(DerValue.java:303)
at com.sun.net.ssl.internal.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1200)
at java.security.KeyStore.load(KeyStore.java:1185)

我不知道问题出在哪里。谁能给我一个提示?

最佳答案

我找到了解决方案。其实是我项目部署的问题。我使用 Maven,它的资源插件使用 UTF8 对资源文件夹中的所有文件进行编码。此编码损坏了 keystore 。解决方案是在pom文件中添加一个忽略过滤选项,告诉maven不要对keystore文件进行编码。

关于java - 从使用 keytool 创建的文件在 osx lion 上加载 keystore ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11473724/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com