- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 java.security.cert.CertificateFactory
生成(从 InputStream
),然后验证公共(public)证书文件。当我使用正确的证书文件(例如 cert.cert
)时,我会获得正确的证书并可以生成指纹,使用它与服务器进行通信等。
但是,当我选择绝对不是证书的文件时,例如settings.txt
,我有时会得到一个CertificateException
,有时它实际上是null
。我找不到对CertificateFactory 的此行为的描述,也找不到某些文件导致generateCertificate
抛出异常而不是返回null 的任何推理。
我的问题代码:
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
InputStream stream = new ByteArrayInputStream(parameters.getCertificate());
X509Certificate cert = (X509Certificate)certificateFactory.generateCertificate(stream);
最后一行将返回异常,或者 cert 将为空。我的问题是:
当非证书文件作为输入给出时,为什么certificateFactory.generateCertificate(stream) 返回 null?它不应该抛出一个CertificateException吗?
最佳答案
我发现这是一个有趣的问题。我对CertificateFactory.generateCertificate()
的阅读文档让我不清楚一种情况,当流位于 EOF 时应该返回什么。我认为它应该产生异常。我相信 null 永远不应该被返回。 java.security.cert.CertificateFactory 类本身只是简单地委托(delegate) generateCertificate()
调用内部 spi 类。 OpenJDK8's implementation of this spi class永远不会返回 null。 Oracle 的实现也可能如此。因此,我必须得出结论,您没有使用这些实现之一。
当我检查Bouncycastle provider's implementation时,我看到它在几个地方返回 null,包括达到 EOF 时。 BouncycaSTLe 的实现可能不合规。
关于java - 对于非证书输入,CertificateFactory 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39986152/
我使用 java.security.cert.CertificateFactory 生成(从 InputStream),然后验证公共(public)证书文件。当我使用正确的证书文件(例如 cert.c
我正在尝试将自签名证书导入 Keystore。我将证书放在 Assets 文件夹中并尝试读取 CertificateFactory 中的输入流。 但 CertificateFactory 对象为空。它
我无法确定 CertificateFactory.getInstance("x.509") 是否线程安全?有人可以澄清一下吗? https://docs.oracle.com/javase/7/doc
我是一名优秀的程序员,十分优秀!