You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Micronaut启用SSL时BCFKS密钥库未找到问题求助

Micronaut 3.8.7 启用BCFKS类型密钥库SSL失败的解决方案

在基于Zulu OpenJDK 11的Micronaut 3.8.7应用中启用SSL,使用BouncyCastle的BCFKS类型密钥库,按以下配置启动时失败:

ssl:
  enabled: true
  key-store:
      path: file:usersDataKeyStore.keystore
      password: 123456
      type: BCFKS
      provider: org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider

核心报错信息:

18:02:19.187 [default-nioEventLoopGroup-1-1] WARN  io.netty.channel.ChannelInitializer - Failed to initialize a channel. Closing: [id: 0x68615a0a]
io.micronaut.http.ssl.SslConfigurationException: An error occurred configuring SSL
    at io.micronaut.http.ssl.SslBuilder.getKeyManagerFactory(SslBuilder.java:111)
    ...
Caused by: java.security.KeyStoreException: BCFKS not found
    ...
Caused by: java.security.NoSuchAlgorithmException: BCFKS KeyStore not available
    ...

当前使用的依赖:

Micronaut version : 3.8.7
Open-JDK : 11 (zulu)
Using the below dependencies
implementation("org.bouncycastle:bc-fips:1.0.2.3")
implementation("org.bouncycastle:bcpkix-fips:1.0.7")
implementation("org.bouncycastle:bcpkix-jdk15on:1.47")

问题分析与解决步骤

1. 清理冲突依赖

移除非FIPS版本的bcpkix-jdk15on:1.47,该依赖与FIPS合规的bc-fips、bcpkix-fips存在版本冲突,会导致Provider加载异常。仅保留以下依赖:

implementation("org.bouncycastle:bc-fips:1.0.2.3")
implementation("org.bouncycastle:bcpkix-fips:1.0.7")

2. 正确注册BouncyCastle FIPS Provider

BCFKS密钥库需要依赖BouncyCastle FIPS Provider,需确保其被JVM正确加载,有两种方式:

  • 代码显式注册:在应用启动类中添加静态代码块注册Provider:
    import org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider;
    import java.security.Security;
    import io.micronaut.runtime.Micronaut;
    
    public class Application {
        static {
            Security.addProvider(new BouncyCastleFipsProvider());
        }
    
        public static void main(String[] args) {
            Micronaut.run(Application.class, args);
        }
    }
    
  • JVM参数配置:修改JVM启动参数,指定自定义安全配置文件:
    -Djava.security.properties=/path/to/your/custom-security.properties
    
    在custom-security.properties中添加Provider配置(序号可根据实际情况调整,避免覆盖默认Provider):
    security.provider.10=org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider
    

3. 验证密钥库格式

确保密钥库确实是BCFKS格式,使用BouncyCastle工具验证:

keytool -list -keystore usersDataKeyStore.keystore -storetype BCFKS -provider org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -storepass 123456

若验证失败,需重新生成BCFKS格式的密钥库。

4. 调整Micronaut SSL配置

配置中可使用Provider别名BCFIPS代替全类名(注册后Provider默认别名即为BCFIPS),简化配置如下:

ssl:
  enabled: true
  key-store:
      path: file:usersDataKeyStore.keystore
      password: 123456
      type: BCFKS
      provider: BCFIPS

内容的提问来源于stack exchange,提问作者Raghav D

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 10:27:40