我们有一个小方法,可以生成自签名的SSL证书,它显然依赖于
不幸的是,在主JDK中没有替代方案,如(而
(tl,dr: 我们依赖sun.security.x509生成自签名SSL证书,需要用JDK8编译,因为在JDK11中没有替代方案。)
从我所看到的来看,该包和所需类仍然存在(请参见
我进行了一些搜索并添加了:
我尝试以相同的方式导出
这个问题与如何仅使用JDK支持的类生成自签名证书?有些相关。
sun.security.x509
。目前,我们仍在使用JDK8构建它,尽管代码库的其余部分(只有一个小型单一库)是使用JDK11构建并在JVM11上运行。不幸的是,在主JDK中没有替代方案,如(而
CertificateFactory
与生成证书几乎没有关系,与其javadoc所述相反...):(tl,dr: 我们依赖sun.security.x509生成自签名SSL证书,需要用JDK8编译,因为在JDK11中没有替代方案。)
- https://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8165481
- https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8058778
从我所看到的来看,该包和所需类仍然存在(请参见
github上的sun.security.x509
),但在构建时(使用maven)我遇到了错误:[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project: Compilation failure: Compilation failure:
[ERROR] OldSelfSignedCertificateGenerator.java:[20,25] package sun.security.x509 does not exist
[ERROR] OldSelfSignedCertificateGenerator.java:[71,45] cannot find symbol
[ERROR] symbol: class X509CertInfo
[ERROR] location: class OldSelfSignedCertificateGenerator
我进行了一些搜索并添加了:
<arg>--add-exports</arg><arg>java.base/sun.security.x509=ALL-UNNAMED</arg>
使用maven-compiler-plugin
进行编译,它有些奏效 - 我只收到了WARNING
,但与sun.security.x509
包无关:
[WARNING] OldSelfSignedCertificateGenerator.java:[20,25] sun.security.x509.AlgorithmId is internal proprietary API and may be removed in a future release
但是!现在似乎我不情愿地进入了模块系统,并且它抱怨无法访问其他基本的Java类(以及我们的一个依赖项):
[ERROR] CertificateUtil.java:[35,17] package java.util.logging is not visible
(package java.util.logging is declared in module java.logging, but module java.base does not read it)
我尝试以相同的方式导出
java.logging
模块,但没有太大的成功。似乎我还需要将这个库及其依赖项转换为模块系统,这并不是真正想要的。这个问题与如何仅使用JDK支持的类生成自签名证书?有些相关。
简而言之,有没有一种方法可以在不使用模块系统的情况下使用JDK 11中的sun.security.x509
包编译库?是否有一些简单的开关可以实现?
<arg>--add-exports</arg><arg>java.base/sun.security.provider=ALL-UNNAMED</arg>
<arg>--add-exports</arg><arg>java.base/sun.security.pkcs=ALL-UNNAMED</arg>
<arg>--add-exports</arg><arg>java.base/sun.security.util=ALL-UNNAMED</arg>
- alastercompileJava { options.compilerArgs << '--add-exports=java.base/sun.security.x509=ALL-UNNAMED' }
- kolobok