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

Tomcat 9.0.93+JVM17+WinServer2022开启FIPS模式报错排查

排查Windows Server 2022 + JDK17 + Tomcat9.0.93 FIPS模式启动报错的步骤

针对启动时出现的The FIPS provider must be configured as the default provider错误,按以下环节逐一排查:

1. 确认JVM的FIPS提供商确实设为默认

  • JDK17的java.security路径已改为[JDK安装目录]/conf/security/java.security,打开后检查security.provider.N的排序:
    • 必须让FIPS合规的提供商(比如SunPKCS11或Windows系统级FIPS提供者)排在第一位,示例配置:
      security.provider.1=SunPKCS11 fips.cfg
      security.provider.2=SUN
      security.provider.3=SunRsaSign
      ...
      
    • 对应的fips.cfg要放在同目录下,配置需指向Windows的FIPS模块,示例:
      name=SunPKCS11-Windows
      library=C:\\Windows\\System32\\bcrypt.dll
      attributes=SunPKCS11-FIPS
      
  • 执行命令验证提供商加载情况:java -Djava.security.debug=provider -version,输出中要确认默认提供商是FIPS合规的,且无加载失败日志。

2. 检查Tomcat启动时的JVM配置是否正确

  • 查看Tomcat的bin/setenv.bat(无则新建),确保没有通过-Djava.security.properties参数覆盖全局的java.security配置
  • 启动Tomcat时添加参数-Djava.security.debug=all,查看启动日志里的提供商加载顺序,确认默认提供商为FIPS合规项
  • 如果Tomcat以Windows服务运行,打开服务属性的「Java」标签,检查启动参数里有没有冲突的安全配置,确保继承JVM的全局FIPS设置

3. 验证APR库的FIPS兼容性

  • 确认Tomcat使用的tcnative-1.dll(APR库)是官方提供的、兼容JDK17和FIPS模式的版本
  • 调整server.xml里的AprLifecycleListener配置,明确指定SSLProvider(如果用OpenSSL需确保是FIPS认证版本):
    <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" FIPSMode="on" SSLProvider="OpenSSL"/>
    
  • 确保系统路径中优先加载的OpenSSL库是FIPS认证版本,避免与非合规版本冲突

4. 深层验证系统FIPS模式配置

  • 打开本地组策略编辑器(gpedit.msc),导航到「计算机配置>Windows设置>安全设置>本地策略>安全选项」,确认「系统加密:使用符合FIPS标准的加密算法来加密、哈希和签名」已启用
  • 检查注册表项HKLM\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy下的Enabled值是否为1(DWORD类型)
  • 重启服务器,确保系统FIPS模式的修改完全生效(部分配置需重启后JVM才能识别)

5. 排除JVM缓存或配置冲突

  • 删除JVM安全缓存目录:%USERPROFILE%\.java\security下的所有文件
  • 使用全新解压的JDK17环境测试,配置好FIPS后启动Tomcat,排查是否为原有JDK环境的配置残留问题

内容的提问来源于stack exchange,提问作者Timothy Ward

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 16:47:37