gpt4 book ai didi

java - 将 X509 证书转换为 PEM 或 ASN.1/DER

转载 作者:行者123 更新时间:2023-11-30 02:02:23 24 4
gpt4 key购买 nike

我有一个证书链 (X509Certificate []),但我在链中只有一个证书。我需要获得完整的链。

我已经尝试过 openssl 命令,但这在这里没有用。有人可以告诉我如何:

  1. 将此 X509 证书转换为我可以保存在文件存储中的 PEM 或 ASN.1/DER?

  2. 使用此证书获取完整链?

编辑:所以,在代码方面,我想要实现的是:

protected static String convertToPem(X509Certificate cert)  {
Base64 encoder = new Base64(64);
String cert_begin = "-----BEGIN CERTIFICATE-----\n";
String end_cert = "-----END CERTIFICATE-----";

byte[] derCert = cert.getEncoded();
String pemCertPre = new String(Base64.encodeBase64(derCert));
String pemCert = cert_begin + pemCertPre + end_cert;
return pemCert;
}

但是,这是行不通的。基本上,我正在寻找一种方法,该方法采用 X509Certificate 对象,然后将其转换为保存在设备上的 .pem 等。

最佳答案

Convert this X509Certificate object to .cer/ .per/ .der that I can save in my file storage?

例如,请参阅 OpenSSL's rsautl cannot load public key created with PEM_write_RSAPublicKey 中的答案.它告诉您如何将 key 与 PEM 和 ASN.1/DER 格式相互转换,并包括对传统格式(又名 SubjectPublicKeyInfo)的处理。

如果您不是以编程方式执行此操作,那么您应该搜索答案。关于如何使用 openssl 命令在 ASN.1/DER 和 PEM 之间进行转换,有很多题外话。或询问Super User ,他们专注于命令及其使用。

Get the complete chain using this certificate?

这是 PKI 中一个众所周知的问题,称为 Which Directory 问题。解决方案是让服务器或服务提供缺少的中间 CA 证书。如果您因为缺少中间 CA 证书而无法验证 Web 服务器或服务的身份,则服务器配置错误。

一旦您拥有中间 CA 证书,您仍然需要在某处进行 root 信任。您可以使用自签名 CA,或由自签名 CA 签名的中间件之一。

此答案有助于使用 OpenSSL 的 s_client 对错误配置的服务器进行故障排除:SSL site and browser warning .


相关:如果像 X.500 中设想的 ITU 那样有一个全局证书目录,那么您就不会遇到第二个问题。依赖方或用户代理只需从目录中获取所需的证书。

但我们缺少一个中央目录,因此依赖方和用户代理经常使用 CA Zoo(也称为本地信任库或 cacerts.pem)。这有其自身的一系列问题,例如错误的 CA 认证站点或服务。

分支机构之一是 CA 卡特尔,其中浏览器与 CA 合作 CA/Browser Forum .浏览器有包含的要求,但他们通常不能惩罚行为不端的 CA,如 Trustwave .

由于浏览器对 CA 签署的服务器证书的依赖/要求,浏览器已设法将自己置于物联网 (IoT) 无法工作的位置。

关于java - 将 X509 证书转换为 PEM 或 ASN.1/DER,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31273660/

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