Я пытаюсь сделать свой Spring Boot Microservices Fips 10-3, что привело меня к Bouncycastle в качестве поставщиков безопасности.
У меня базовое приложение для пружинного загрузки, созданное с помощью Spring initializr, которое я запускаю, чтобы проверить Java.security < /code>.bc-fips-2.1.0.jar
bcpkix-fips-2.1.8.jar
bctls-fips-2.1.20.jar
bcutil-fips-2.1.4.jar
< /code>
и указание приложения на эти банки в качестве пути модуля < /p>
ENTRYPOINT ["java", "--module-path", "/usr/share/java/bouncycastle-modules","-jar", "application.jar"]
< /code>
Следующая конфигурация работает нормально: < /p>
security.provider.1=org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider
security.provider.2=org.bouncycastle.jsse.provider.BouncyCastleJsseProvider fips:BCFIPS
security.provider.3=SUN
< /code>
Однако, если я удалю поставщика Sun, приложение не может запустить с ошибки Stackoverflow: < /p>
INFO: Found string system property [javax.net.ssl.trustStoreType]: FIPS
Exception in thread "main" java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:118)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:102)
at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:64)
at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:40)
Caused by: java.lang.StackOverflowError
at java.base/java.util.regex.Pattern$CharPropertyGreedy.match(Pattern.java:4453)
at java.base/java.util.regex.Pattern$GroupHead.match(Pattern.java:4969)
at java.base/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:4134)
at java.base/java.util.regex.Pattern$GroupHead.match(Pattern.java:4969)
at java.base/java.util.regex.Pattern$Branch.match(Pattern.java:4914)
at java.base/java.util.regex.Pattern$GroupTail.match(Pattern.java:5000)
at java.base/java.util.regex.Pattern$CharPropertyGreedy.match(Pattern.java:4470)
at java.base/java.util.regex.Pattern$GroupHead.match(Pattern.java:4969)
at java.base/java.util.regex.Pattern$BmpCharPropertyGreedy.match(Pattern.java:4509)
at java.base/java.util.regex.Matcher.match(Matcher.java:1794)
at java.base/java.util.regex.Matcher.matches(Matcher.java:754)
at java.base/java.security.SecureRandom.getInstanceStrong(SecureRandom.java:959)
at org.bouncycastle.fips.core/org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider$2.run(Unknown Source)
at org.bouncycastle.fips.core/org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider$2.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:319)
at org.bouncycastle.fips.core/org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider.getCoreSecureRandom(Unknown Source)
at org.bouncycastle.fips.core/org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider.access$300(Unknown Source)
at org.bouncycastle.fips.core/org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider$1.run(Unknown Source)
at org.bouncycastle.fips.core/org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider$1.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:319)
at org.bouncycastle.fips.core/org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider.getEntropySourceProvider(Unknown Source)
at org.bouncycastle.fips.core/org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider.getDefaultEntropySourceProvider(Unknown Source)
at org.bouncycastle.fips.core/org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider.access$500(Unknown Source)
at org.bouncycastle.fips.core/org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider$PooledSecureRandomProvider.get(Unknown Source)
at org.bouncycastle.fips.core/org.bouncycastle.crypto.CryptoServicesRegistrar.getSecureRandomIfSet(Unknown Source)
at org.bouncycastle.fips.core/org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider.getDefaultSecureRandom(Unknown Source)
at org.bouncycastle.fips.core/org.bouncycastle.jcajce.provider.ProvRandom$PooledSecureRandomProvider.get(ProvRandom.java:84)
at org.bouncycastle.fips.core/org.bouncycastle.jcajce.provider.ProvRandom$MySecureRandomSpi.(ProvRandom.java:178)
at org.bouncycastle.fips.core/org.bouncycastle.jcajce.provider.ProvRandom$1.createInstance(ProvRandom.java:32)
at org.bouncycastle.fips.core/org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider$BcService.newInstance(Unknown Source)
at java.base/java.security.SecureRandom.getDefaultPRNG(SecureRandom.java:298)
at java.base/java.security.SecureRandom.(SecureRandom.java:225)
< /code>
Похоже, что ошибка связана с Securerandom, однако я не смог найти поставщика Bouncycastle, который удовлетворил бы эту зависимость.
Есть ли альтернатива для провайдера Sun, и присутствие поставщика Sun вместе с поставщиками Bouncycastle не предназначено?>
Подробнее здесь: https://stackoverflow.com/questions/795 ... astle-fail