Rodolfo Farias
Rodolfo Farias

Reputation: 11

BouncyCastle in SpringBoot

When I run my Springboot application as a jar file, it gives me the error below. The problem doesn't happen when I run my project with the IDE. Could you help me with a solution? thank you!.

2022-01-14 23:34:58.885  INFO 4247 --- [nio-8080-exec-2] c.o.b.h.s.internal.BouncyCastleHelper    : Instantiated provider: org.bouncycastle.jce.provider.BouncyCastleProvider
com.oracle.bmc.http.signing.internal.PEMFileRSAPrivateKeySupplier$PEMFileRSAPrivateKeySupplierException: org.bouncycastle.openssl.PEMException: exception processing key pair: JCE cannot authenticate the provider BC
    at com.oracle.bmc.http.signing.internal.PEMFileRSAPrivateKeySupplier.<init>(PEMFileRSAPrivateKeySupplier.java:118)
    at com.oracle.bmc.http.signing.internal.DefaultRequestSignerFactory.createKeySupplier(DefaultRequestSignerFactory.java:111)
    at com.oracle.bmc.http.signing.internal.DefaultRequestSignerFactory.createRequestSigner(DefaultRequestSignerFactory.java:54)
    at com.oracle.bmc.objectstorage.ObjectStorageClient.<init>(ObjectStorageClient.java:284)
    at com.oracle.bmc.objectstorage.ObjectStorageClient.<init>(ObjectStorageClient.java:218)
    at com.oracle.bmc.objectstorage.ObjectStorageClient.<init>(ObjectStorageClient.java:181)
    at com.oracle.bmc.objectstorage.ObjectStorageClient.<init>(ObjectStorageClient.java:146)
    at com.oracle.bmc.objectstorage.ObjectStorageClient.<init>(ObjectStorageClient.java:118)
    at com.oracle.bmc.objectstorage.ObjectStorageClient.<init>(ObjectStorageClient.java:93)
    at com.oracle.bmc.objectstorage.ObjectStorageClient.<init>(ObjectStorageClient.java:70)
    at com.oracle.bmc.objectstorage.ObjectStorageClient.<init>(ObjectStorageClient.java:56)
    at com.oracle.bmc.objectstorage.ObjectStorageClient.<init>(ObjectStorageClient.java:45)

......


Caused by: org.bouncycastle.openssl.PEMException: exception processing key pair: JCE cannot authenticate the provider BC
    at org.bouncycastle.openssl.PEMEncryptedKeyPair.decryptKeyPair(Unknown Source)
    at com.oracle.bmc.http.signing.internal.PEMFileRSAPrivateKeySupplier.<init>(PEMFileRSAPrivateKeySupplier.java:94)
    ... 112 more
Caused by: java.lang.SecurityException: JCE cannot authenticate the provider BC
    at java.base/javax.crypto.JceSecurity.getInstance(JceSecurity.java:143)
    at java.base/javax.crypto.SecretKeyFactory.getInstance(SecretKeyFactory.java:248)
    at org.bouncycastle.jcajce.util.ProviderJcaJceHelper.createSecretKeyFactory(Unknown Source)
    at org.bouncycastle.openssl.jcajce.PEMUtilities.getKey(Unknown Source)
    at org.bouncycastle.openssl.jcajce.PEMUtilities.getKey(Unknown Source)
    at org.bouncycastle.openssl.jcajce.PEMUtilities.crypt(Unknown Source)
    at org.bouncycastle.openssl.jcajce.JcePEMDecryptorProviderBuilder$1$1.decrypt(Unknown Source)
    ... 114 more
Caused by: java.lang.IllegalStateException: zip file closed
    at java.base/java.util.zip.ZipFile.ensureOpen(ZipFile.java:829)
    at java.base/java.util.zip.ZipFile.getManifestName(ZipFile.java:1055)
    at java.base/java.util.zip.ZipFile$1.getManifestName(ZipFile.java:1098)
    at java.base/javax.crypto.JarVerifier.verifySingleJar(JarVerifier.java:460)
    at java.base/javax.crypto.JarVerifier.verifyJars(JarVerifier.java:316)
    at java.base/javax.crypto.JarVerifier.verify(JarVerifier.java:259)
    at java.base/javax.crypto.ProviderVerifier.verify(ProviderVerifier.java:129)
    at java.base/javax.crypto.JceSecurity.verifyProvider(JceSecurity.java:189)
    at java.base/javax.crypto.JceSecurity.getVerificationResult(JceSecurity.java:217)
    at java.base/javax.crypto.JceSecurity.getInstance(JceSecurity.java:139)
    ... 120 more

Upvotes: 1

Views: 3664

Answers (1)

Andy Wilkinson
Andy Wilkinson

Reputation: 116171

This is due to a bug in Spring Boot that is being tracked in this issue: https://github.com/spring-projects/spring-boot/issues/28837.

The problem is specific to Oracle's JDK 17. If switch JDK is an option, you could downgrade to Oracle JDK 11. Alternatively, any version of OpenJDK (8, 11, and 17 are all supported) should also avoid the problem.

Upvotes: 1

Related Questions