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

Keycloak中KC_HTTPS_TRUST_STORE_FILE弃用后,mTLS配置该如何处理?

解决方案

1. 创建仅包含私有CA的专属信任库

生成一个只存放你的私有CA证书的PKCS12或JKS信任库,确保不混入任何公共CA(如GlobalSign、Let'sEncrypt):

# PKCS12格式示例(推荐)
keytool -importcert -file private-ca.crt -keystore mtls-client-truststore.p12 -storetype PKCS12 -alias private-ca -storepass your-secure-password

2. 配置Keycloak Server的mTLS信任锚

用Quarkus原生配置替代已弃用的KC_HTTPS_TRUST_STORE_FILE,指定仅用于mTLS客户端认证的信任库,同时禁用系统信任库合并:

# 启动参数示例
./kc.sh start \
  --https-enabled=true \
  --http-ssl-client-auth=required \
  --quarkus.ssl.trust-store-file=mtls-client-truststore.p12 \
  --quarkus.ssl.trust-store-password=your-secure-password \
  --quarkus.ssl.trust-store-type=PKCS12 \
  --quarkus.ssl.trust-store-use-system-certificates=false
  • --quarkus.ssl.trust-store-use-system-certificates=false:确保只使用你指定的私有CA信任库,不加载OS/JRE的公共CA,既避免握手时发送所有公共CA,也能拒绝GlobalSign/Let'sEncrypt的客户端证书。
  • --http-ssl-client-auth=required:强制要求客户端证书认证,可根据实际需求改为requested。

3. 保证出站请求不信任私有CA颁发的服务器证书

Keycloak的出站HTTP客户端(如调用外部身份提供者、API)默认使用OS/JRE的系统信任库,无需额外配置。只要你的私有CA未导入到OS/JRE信任库中,出站请求就会自动拒绝由该CA颁发的服务器证书。

验证配置有效性

用openssl s_client确认mTLS握手时的可接受CA列表:

openssl s_client -connect your-keycloak-domain:443 -tls1_3

在输出中查看「Acceptable client certificate CA names」,确认仅包含你的私有CA,无公共CA条目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 19:04:59