使用java bouncing castle验证证书链

使用java bouncing castle验证证书链,java,validation,certificate,x509certificate,Java,Validation,Certificate,X509certificate,我想验证将导入我的应用程序的证书链。我不知道怎么做 我的同事告诉我,我必须使用弹跳城堡进行验证。我看到了几个例子,但仍然没有任何进展 我有一个列表,其中包含从UI导入的所有证书,还有私钥 请告诉我如何使用Bouncing castle验证证书链。您可以使用java.security.cert.CertificateFactory验证您的证书链 InputStream inStream = ByteArrayInputStream(<data>); CertificateFactory

我想验证将导入我的应用程序的证书链。我不知道怎么做

我的同事告诉我,我必须使用弹跳城堡进行验证。我看到了几个例子,但仍然没有任何进展

我有一个
列表
,其中包含从UI导入的所有证书,还有
私钥


请告诉我如何使用Bouncing castle验证证书链。

您可以使用
java.security.cert.CertificateFactory
验证您的证书链

InputStream inStream = ByteArrayInputStream(<data>);
CertificateFactory cf = CertificateFactory.getInstance("X.509");
CertPath cp = cf.generateCertPath(inStream);
List<Certificate> certs = cp.getCertificates();

InputStream inStream=ByteArrayInputStream();
CertificateFactory cf=CertificateFactory.getInstance(“X.509”);
CertPath cp=cf.generateCertPath(流内);
List certs=cp.getCertificates();
certs
现在包含证书链。
certs
certs[0]
)中的第一个条目包含证书,以下证书是链

certs
中的最后一项是根证书,应将其与应用程序中已存在的证书进行比较


如果无法建立证书路径,上述代码将抛出
证书异常

您能告诉我们您想对证书做什么吗?在大多数情况下,使用的库(例如
HTTPS
WS-Security
)将为您验证证书。我想检查证书链是否有效。或者,如果用户在导入时未反转证书的位置。在我的应用程序中,证书作为文本通过UI导入-----开始证书--------等等。THanksInputStream inStream=ByteArrayInputStream();这是包含验证前所有证书的it列表?@user2739823否
是原始数据。因此,只要使用在UI中输入的
字符串
,就可以执行byte[]
data=.getBytes()
,假设
是UI中的
字符串
,并且没有使用特殊字符集(可能需要先检查
字符串
是否以
----BEGIN CERTIFICATE------
开头。generateCertificatePath(..)方法不验证证书链!它将使用传递给它的任何证书创建链。有单独的类(CertPathValidator)对于执行验证:@JuhaPalomäki如果您仔细阅读,您将看到我写道您必须自己验证证书链。getCertPath仅返回证书,但不验证它们。。。