gpt4 book ai didi

java - org.bouncycaSTLe.tls.crypto.TlsCertificate getSubject() 和其他 getter

转载 作者:行者123 更新时间:2023-12-04 22:42:27 26 4
gpt4 key购买 nike

我有一个使用 bouncycaSTLe (ver 1.66) 连接到 https 服务器的客户端

tlsClientProtocol.connect(new DefaultTlsClient(new BcTlsCrypto(new SecureRandom())) {

@Override
public TlsAuthentication getAuthentication() throws IOException {
return new ServerOnlyTlsAuthentication() {
@Override
public void notifyServerCertificate(TlsServerCertificate tsc) throws IOException {
// validate srvCert here. here is the problem
TlsCertificate srvCert = tsc.getCertificate().getCertificateAt(0);
}
};
}
});
"srvCert"是 的一个实例org.bouncycaSTLe.tls.crypto.TlsCertificate ,
如何将其转换为 org.bouncycaSTLe.asn1.x509.Certificate 像旧版本的 BouncyCaSTLe 或者我如何获得“NotBefore”、“NotAfter”、“Subject”...等。
PS:我暂时不关心发行者链,我只想打印出最终证书的所有细节,还有 BcTls证书和接口(interface)一样没用 证书 .
BouncyCaSTLe 文档没有帮助,我是这个库的新手,互联网上的例子很旧(如果我没记错的话,在 1.6 的变化之前)
编辑:为了清楚起见,界面 org.bouncycaSTLe.tls.crypto.TlsCertificate 没有我需要的方法,这个类有: org.bouncycaSTLe.asn1.x509.Certificate .但是在上一个版本中,方法签名被更改为给你无用的类。

最佳答案

BouncyCaSTLe有很多getInstance(Object)方法,它允许您在有意义的情况下将一个对象转换为另一个对象。要查找支持哪些转换,最简单的方法是查看源代码。
在您的情况下,如果 tlsCertificate包含您的 org.bouncycastle.tls.crypto.TlsCertificate 实例,你可以得到一个org.bouncycastle.asn1.x509.Certificate和:

final Certificate certificate = Certificate.getInstance(tlsCertificate.getEncoded());
然而,而不是转换 TlsCertificate转换为 ASN.1 结构表示我宁愿将其转换为 JCE 的 java.security.cert.X509Certificate :
final X509Certificate x509Certificate;
if (tlsCertificate instanceof JcaTlsCertificate) {
x509Certificate = ((JcaTlsCertificate) tlsCertificate).getX509Certificate();
} else {
final CertificateFactory factory = CertificateFactory.getInstance("X.509");
x509Certificate = (X509Certificate) factory.generateCertificate(new ByteArrayInputStream(tlsCertificate.getEncoded()));
}

关于java - org.bouncycaSTLe.tls.crypto.TlsCertificate getSubject() 和其他 getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66028868/

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