gpt4 book ai didi

java - 如何在没有 sun.security 的情况下使用 key 对创建 X509Certificate

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:50:03 27 4
gpt4 key购买 nike

我想为我的单元测试生成 x509 证书和 key 对。

private Pair<String, String> generateTokenAndCertificate() {
try {

//Configure generator
CertAndKeyGen certGen = new CertAndKeyGen("RSA", "SHA256WithRSA");
certGen.generate(2048);
long validSecs = (long) 365 * 24 * 60 * 60; // valid for one year


//Token
CharSequence content = "test";
Signer signer = new RsaSigner((RSAPrivateKey) certGen.getPrivateKey());
String token = JwtHelper.encode(content, signer).getEncoded();

//Certificate
X500Name data = new X500Name("CN=Test Application,O=Company,L=City,C=DE");
X509Certificate cert = certGen.getSelfCertificate(data, validSecs);
Base64 encoder = new Base64();
String certificate = X509Factory.BEGIN_CERT + "\n";
certificate += encoder.encode(cert.getEncoded());
certificate += X509Factory.END_CERT + "\n";

return new Pair<>(token, certificate);
} catch (Exception e) {
return null;
}
}

问题是我用过

import sun.security.provider.X509Factory;
import sun.security.tools.keytool.CertAndKeyGen;
import sun.security.x509.X500Name;

出现如下错误:

error: package sun.security.tools.keytool does not exist

和:

error: cannot find symbol
CertAndKeyGen certGen = new CertAndKeyGen("RSA", "SHA256WithRSA");
^
symbol: class CertAndKeyGen
location: class CertificationProviderSpecification

我知道 javac 不会加载关于 ct.sym 的完整 rt.jar,我可以通过 解决此类错误-XDignore.symbol.file 或充气城堡。

但是否可以通过 java.securityorg.springframework.security 生成这些?

最佳答案

您可以仅使用 java.security 创建 key 对:

KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA");
gen.initialize(2048, SecureRandom.getInstance("SHA1PRNG"));
KeyPair keyPair = gen.generateKeyPair();

但是要创建证书,您必须使用 sun.security 类。

我从未使用过 org.springframework.security 但创建证书的一个很好的替代方法是 Bouncy Castle API - 检查 org.bouncycaSTLe.cert.jcajce.JcaX509v3CertificateBuilder 类,有 lots of online examples .

关于java - 如何在没有 sun.security 的情况下使用 key 对创建 X509Certificate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45016240/

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