首页 > 解决方案 > 使用 java 程序为 ssl 生成证书签名请求

问题描述

我想编写一个程序,可以生成包含所有信息的证书签名请求,例如域名、国家名称、州组织等。我知道如何使用open-ssl生成它,但我只想使用java 程序生成它。我怎样才能做到这一点?

谢谢你的帮助

标签: javacsr

解决方案


Bouncy castle 提供了您需要的所有工具。

这是生成 CSR 的代码:

    PrivateKey priKey = entry.getPrivateKey(keystore, pwd);
    PKCS10CertificationRequestBuilder p10Builder
            = new JcaPKCS10CertificationRequestBuilder(
                    cert.getSubjectX500Principal(), cert.getPublicKey());
    JcaContentSignerBuilder csBuilder = new JcaContentSignerBuilder(cert.getSigAlgName());
    ContentSigner signer = csBuilder.build(priKey);
    PKCS10CertificationRequest csr = p10Builder.build(signer);
    try (OutputStream stream = new FileOutputStream(file);
            Writer writer = new OutputStreamWriter(stream, "UTF-8");
            JcaPEMWriter out = new JcaPEMWriter(writer)) {
        out.writeObject(csr);
    }

推荐阅读