tl,dr; 有没有本地的Java17解决方案来生成自签名证书,无论是通过标准库(非常不可能)还是一些精简、轻量级的库?
由于从JDK11开始,访问内部JDK包的权限受到限制,因此无法使用sun.security.x509类,所以我提出了一个类似的问题(在没有模块的情况下访问JDK 11中的sun.security.x509?)。直到JDK17,可以通过某些编译器配置绕过它来打开那些包。但是,JDK17更改了这一选项。
据我所知,目前的解决方案是:
1. BouncyCastle - 但它是一个庞大的5MB瑞士军刀安全库,因此仅用于生成证书似乎有些浪费。 2. 直接调用keytool java工具,但这有两个缺点:调用外部工具较慢,并且需要创建密钥库文件。
目前(2)在我的用例中似乎更方便,但我希望找到第三个选项-本地、轻量级的解决方案。
由于从JDK11开始,访问内部JDK包的权限受到限制,因此无法使用sun.security.x509类,所以我提出了一个类似的问题(在没有模块的情况下访问JDK 11中的sun.security.x509?)。直到JDK17,可以通过某些编译器配置绕过它来打开那些包。但是,JDK17更改了这一选项。
据我所知,目前的解决方案是:
1. BouncyCastle - 但它是一个庞大的5MB瑞士军刀安全库,因此仅用于生成证书似乎有些浪费。 2. 直接调用keytool java工具,但这有两个缺点:调用外部工具较慢,并且需要创建密钥库文件。
目前(2)在我的用例中似乎更方便,但我希望找到第三个选项-本地、轻量级的解决方案。
编辑:有一个OpenJDK问题:JDK-8058778:用于创建证书和证书请求的新API,希望有一天它能够被实现...
keytool
选项,因为 OpenJDK 存在一个问题:JDK-8058778: New APIs for creating certificates and certificate requests,我希望有一天它会被实现,但现在我们想采用更新的 Java 版本,而keytool
是我们最好的折中方案(最少的依赖关系,对资源的影响较小且相对兼容)。 我认为使用自己的 CA 对 CSR 签名证书应该是可行的,但这超出了我们的范围。 - Wojtek