如何使用 JDK17 在 Java 中生成自签名证书

Woj*_*tek 7 java certificate x509certificate java-17 openjdk-17

TL,博士;是否有本地 Java17 解决方案来生成自签名证书,无论是通过标准库(不太可能)还是通过一些轻量级库?

还有一个类似的问题(我问过Access `sun.security.x509` in JDK 11 without module?),因为从 JDK11 开始,对内部 JDK 包的访问受到限制,因此无法使用sun.security.x509. 直到 JDK17 为止,都可以通过某些编译器配置来标记打开这些包来规避它。JDK17 改变了这一点,删除了该选项。

从我能够收集到的当前解决方案是:

  1. BouncyCastle - 但它是一个巨大的 5MB 瑞士刀安全库,因此仅使用它来生成证书似乎有些浪费。
  2. 直接调用keytooljava工具,但这有两个缺点:调用外部工具速度较慢,并且需要创建密钥库文件。

目前(2)在我的用例中似乎更方便,但我很想找到第三个选项 - 本机、轻量级解决方案。

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

Woj*_*tek 0

如果有人感兴趣,keytool可以在这里找到基本和粗略的实现:KeytoolCertificateGenerator.java