Java 忽略了类路径中的 Bouncy Castle JCA 提供程序版本
Bouncy Castle JCA Provider Version In Classpath Ignored by Java
当我尝试实例化依赖于 bouncy castle 1.46 的密钥库时,我的 spring 启动应用程序出现错误的密钥库版本错误。
我在 pom.xml 甚至我的类路径上添加了正确的版本 1.46,但是当我执行 spring-boot 应用程序时,运行时对 Bouncy Castle 提供程序的版本检查表明版本为 1.51。
如何确保 spring-boot 应用程序运行在我的 pom.xml.
上定义的 Bouncy Castle 1.46
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.46</version>
</dependency>
private void installJCAProvider() {
BouncyCastleProvider bouncyCastleProvider = new BouncyCastleProvider();
System.err.println("Bouncy Catle Provider Version " + bouncyCastleProvider.getVersion() + " \nName " + bouncyCastleProvider.getName() + " | \n" + bouncyCastleProvider.getInfo());
Security.addProvider(bouncyCastleProvider);
Provider[] providers = Security.getProviders();
for (Provider provider : providers) {
System.err.println("Installed security providers" +
provider.getInfo() + "\n");
}
}
日志
Bouncy Castle Provider Version 1.51
Name SC |
BouncyCastle Security Provider v1.51
运行 mvn dependency:tree
查看版本 1.51
的来源并将其从依赖项中排除。
此外 spring-boot 在其 POMs
定义依赖版本中声明了一组属性。因此,使用 属性 定义版本的 Bouncy Castle 库查看 spring-boot starter 的 POM,并在你的 POM 中重新定义它的值。
据此https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html
您可以尝试通过将依赖项声明放在依赖项列表中 spring-boot 启动器的上方来欺骗 Maven。
@Danila 的回答很有帮助,但是,也请按照 oracle 提供的说明将 bouncy castle 版本 1.46 {或您的首选版本}添加到 $[=13 中的 CSP - 加密服务提供商列表中=] https://docs.oracle.com/cd/E19830-01/819-4712/ablsc/index.html干杯!
当我尝试实例化依赖于 bouncy castle 1.46 的密钥库时,我的 spring 启动应用程序出现错误的密钥库版本错误。 我在 pom.xml 甚至我的类路径上添加了正确的版本 1.46,但是当我执行 spring-boot 应用程序时,运行时对 Bouncy Castle 提供程序的版本检查表明版本为 1.51。
如何确保 spring-boot 应用程序运行在我的 pom.xml.
上定义的 Bouncy Castle 1.46<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.46</version>
</dependency>
private void installJCAProvider() {
BouncyCastleProvider bouncyCastleProvider = new BouncyCastleProvider();
System.err.println("Bouncy Catle Provider Version " + bouncyCastleProvider.getVersion() + " \nName " + bouncyCastleProvider.getName() + " | \n" + bouncyCastleProvider.getInfo());
Security.addProvider(bouncyCastleProvider);
Provider[] providers = Security.getProviders();
for (Provider provider : providers) {
System.err.println("Installed security providers" +
provider.getInfo() + "\n");
}
}
日志
Bouncy Castle Provider Version 1.51
Name SC |
BouncyCastle Security Provider v1.51
运行 mvn dependency:tree
查看版本 1.51
的来源并将其从依赖项中排除。
此外 spring-boot 在其 POMs
定义依赖版本中声明了一组属性。因此,使用 属性 定义版本的 Bouncy Castle 库查看 spring-boot starter 的 POM,并在你的 POM 中重新定义它的值。
据此https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html 您可以尝试通过将依赖项声明放在依赖项列表中 spring-boot 启动器的上方来欺骗 Maven。
@Danila 的回答很有帮助,但是,也请按照 oracle 提供的说明将 bouncy castle 版本 1.46 {或您的首选版本}添加到 $[=13 中的 CSP - 加密服务提供商列表中=] https://docs.oracle.com/cd/E19830-01/819-4712/ablsc/index.html干杯!