当前位置: 首页 > 知识库问答 >
问题:

BouncyCastle-生成MS Windows理解的证书文件

郗唯
2023-03-14

有人帮忙吗?

谢了。

共有1个答案

谢墨竹
2023-03-14

通常,您会生成私钥和证书签名请求,然后将csr发送给CA,由CA颁发证书。最后,您可以生成keystore并将私钥和证书一起存储在其中。因此,我不明白您的CA是如何将私钥存储在数据库中的,因为私钥没有发送给CA。

省略这些信息(也许你有一个自签名的CA,用于基础设施的目的,数据库存储私钥不安全,等等),事情是这样的;要在windows上加载私钥和证书,需要keystore文件(对于windows来说通常是PFXPKCS12),而不是只需要证书。要使用java和bouncycastle按照您的要求这样做,您可以使用以下示例代码(正如您所说,我假设您有证书和私钥):

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.security.Key;
import java.security.KeyStore;
import java.security.cert.Certificate;
import java.security.cert.CertificateFactory;

import org.bouncycastle.jce.provider.BouncyCastleProvider;

public class Sample {

    public static void main(String[] args) throws Exception {

        // generate your certificate
        CertificateFactory cf = CertificateFactory.getInstance("X509", new BouncyCastleProvider());
        Certificate yourCert = cf.generateCertificate(new FileInputStream("C:/your_certificate_path"));
        // here you can add also the issuer of your cert
        Certificate[] certChain = { yourCert };
        // depending on your private key format you've a different
        // ways to parse its
        Key privatekey = null;//...
        String alias = "yourKSEntry";
        // generate the keystore
        KeyStore ks = KeyStore.getInstance("PKCS12", new BouncyCastleProvider());
        // necessary to init a new keystore
        ks.load(null, null);
        String keyPass = null;// your key pass or null if the key file has no password
        // adds the key and cert to the keystore
        ks.setKeyEntry(alias, privatekey, null, certChain);
        // save to file in order that then you
        // can install on windows keystore
        ks.store(new FileOutputStream("C:/where_save_your_keystore.p12"), "your_keystore_pass".toCharArray());

    }
}

希望这能有所帮助,

 类似资料:
  • 伙计们!我正在尝试使用bouncycastle创建X.509证书,它应该由另一个证书签名并存储它的PEM base 64格式。 我已经有了自签名证书(公钥和私钥)。现在我要创建一个新的,并用现有的自签名证书签名。 验证无例外地通过了,这意味着从我的观点来看,它是由Cacert成功签署的: 然后将其解码到PEM base 64:

  • 问题是如何在Java中以编程方式生成证书链。换言之,我想用java执行此处详述的操作:http://fusesource.com/docs/broker/5.3/security/i382664.html 当然,我可以为新客户端创建RSA密钥: } 并生成相应的证书: } 然后我生成证书签名请求,并将其保存到csrFile文件: 哪里 现在我应该用CA私钥对CSR进行签名,但我不知道如何在java

  • 本文档提供使用 openssl 生成自签名证书的一个示例,用户也可以根据自己的需求生成符合要求的证书和密钥。 假设实例集群拓扑如下: Name Host IP Services node1 172.16.10.11 DM-master1 node2 172.16.10.12 DM-master2 node3 172.16.10.13 DM-master3 node4 172.16.10.14 DM

  • 问题内容: 我正在努力解决以下问题: 我有一个使用此代码签名的CSR: 这将成功运行。但是,当我尝试使用以下方法检查密钥时: …它失败并出现CertificateException。请注意,我在这里使用VERY SAME密钥库,这意味着与我签名的CA密钥包含在其中。为什么会这样? 顺便说一句,很奇怪,当我使用Windows的证书查看器打开生成的签名证书时,它确实显示了颁发CA的名称,但其条目未显示

  • 我已经尝试了各种方法,通过导入一个基于BouncyCastle的X509Certificate实例和相关的私钥(RsaPrivateCrtKeyParameters)。NET X509Certificate2一个RSACryptServiceProvider实例,并将其保存到证书存储区(NET的X509Store,My/CurrentUser)。 在证书存储MMC管理单元中,似乎有一个与证书相关联

  • 我使用的是nimbus jose jwt 5.14,我用以下代码生成了RSA密钥对 现在我需要解释一些关于公钥的“元数据”: e 孩子 kty n 使用 x5c 如何获得x5c?是否可以使用此库生成X509证书?此字段为空: