如何在JDK17中生成自签名证书。

7
tl,dr; 有没有本地的Java17解决方案来生成自签名证书,无论是通过标准库(非常不可能)还是一些精简、轻量级的库?
由于从JDK11开始,访问内部JDK包的权限受到限制,因此无法使用sun.security.x509类,所以我提出了一个类似的问题(在没有模块的情况下访问JDK 11中的sun.security.x509?)。直到JDK17,可以通过某些编译器配置绕过它来打开那些包。但是,JDK17更改了这一选项。
据我所知,目前的解决方案是:
1. BouncyCastle - 但它是一个庞大的5MB瑞士军刀安全库,因此仅用于生成证书似乎有些浪费。 2. 直接调用keytool java工具,但这有两个缺点:调用外部工具较慢,并且需要创建密钥库文件。
目前(2)在我的用例中似乎更方便,但我希望找到第三个选项-本地、轻量级的解决方案。

编辑:有一个OpenJDK问题:JDK-8058778:用于创建证书和证书请求的新API,希望有一天它能够被实现...

1个回答

0

它是否允许仅生成自签名证书? - Max
是的,它只允许使用自签名证书,如果您需要适当的证书,则需要联系适当的CA。在这种情况下,您可以使用acme4j来获取Let's Encrypt证书,但这是稍微不同的用例。 - Wojtek
实际上,我不需要真正的CA。我使用了Bouncy Castle创建了一些测试用的“CA”证书链,但我正在寻找另一种创建证书的方法。我发现了你的问题,目前我只看到通过ProcessBuilder和sun.security的keytool以及--exports选项来创建证书,也许你已经找到了更好的方法来创建证书? - Max
不,我们现在采用了 keytool 选项,因为 OpenJDK 存在一个问题:JDK-8058778: New APIs for creating certificates and certificate requests,我希望有一天它会被实现,但现在我们想采用更新的 Java 版本,而 keytool 是我们最好的折中方案(最少的依赖关系,对资源的影响较小且相对兼容)。 我认为使用自己的 CA 对 CSR 签名证书应该是可行的,但这超出了我们的范围。 - Wojtek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接