当前位置: 首页 > 面试题库 >

PKCS#12:DerInputStream.getLength()异常

朱硕
2023-03-14
问题内容

我使用keytool命令生成证书:

keytool -genkeypair -alias myRSAKey -keyalg RSA -keysize 1024 -keystore test.p12 -storepass test -storetype pkcs12

然后,如果我尝试使用java安全性API加载它,则在将文件作为字节[]获得后:

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指向错误/空白/刚创建的文件
  • InputStream已打开或其他正在占用资源
  • InputStream 已被使用和读取 ,因此InputStream的下一个字节的位置是它的结尾

最后一个是对我的问题负责。该代码是根据证书创建一个InputStream,然后继续在两个KeyStore.load()调用中使用它,第一个成功,第二个总是让我遇到此错误。



 类似资料:
  • 我正在努力创建一个pfx文件与Xamarin和BouncyCastle。我有以下设置/规格 .NET:PCL.NET Framework 4.5.1 沙马林:4.5.0.476 BouncyCastle:BouncyCastle签名的1.7.0.1(NuGet包) 我想为我的移动客户端生成一个自签名证书,以便根据我的服务器对自己进行身份验证。使用BouncyCastle的创建工作非常好。我的问题是

  • 我在Windows7上有OpenSSL x64,这是我从Google代码上的OpenSSL-for Windows下载的。我正试图跑: 但我有个错误。 如何使用OpenSSL从PKCS#12存储中提取PEM中的证书?

  • Bouncy Castle FIP是否支持将“PKCS12”作为密钥库/信任库?我在某个地方读到,在approved模式下,它不支持PKCS#12格式,但在non approved模式下(通常使用的库)支持它。

  • 从Weblogic 11c切换到Weblogic 12c后,我得到了这个异常: 我发现了有关这些主题的其他问题,但所有解决方案都是关于错误的库(Vaadin 7-Bean验证)。我认为我的Hibernate验证器与bean验证器库匹配。这就是我在WEB-INF/lib中的内容: 它会是由其他一些依赖引起的吗? EDIT我目前在我的weblogic应用程序中有这个。xml,一切正常:

  • 问题内容: 从Weblogic 11c切换到Weblogic 12c后,出现此异常: 我发现了有关该主题的其他问题,但是所有解决方案都是关于错误的库的(Vaadin 7-Bean Validation )。我认为我的hibernate-validator与bean验证器库匹配。这是我在WEB-INF / lib中拥有的: 可能是由其他依赖性引起的吗? 编辑 我目前在我的weblogic-appli

  • 任何帮助都是非常感谢的。提前谢了。