我使用keytool命令生成证书:
keytool -genkeypair -alias myRSAKey -keyalg RSA -keysize 1024 -keystore test.p12 -storepass test -storetype pkcs12
然后,如果我尝试使用java安全性API加载它,则在将文件作为byte []获取后:
KeyStore ks = KeyStore.getInstance("PKCS12");
try{
ks.load(new ByteArrayInputStream(data), "test".toCharArray())
} catch (Exception e){
...
}
我得到一个DerInputStream.getLength():lengthTag = 127,太大的异常。
怎么了?
最佳答案
我遇到了这个问题,我已经搜索了谷歌的深度,但仍然找不到答案。经过几天的苦苦挣扎之后,我发现了导致此错误的原因。
KeyStore.load(InputStream is, String pass);
此方法使用一个InputStream,如果此类InputStream出现任何问题,则会引发此异常,这是我遇到的一些问题:
最后一个是对我的问题负责。代码是根据证书创建一个InputStream,然后继续在两个KeyStore.load()调用中使用它,第一个成功,第二个总是让我遇到此错误。
关于java - PKCS#12 : DerInputStream. getLength()异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7399154/