如何配置Quarkus:8443端口健康端点免mTLS,其余端点强制mTLS
配置Quarkus实现健康端点免mTLS、其余端点强制mTLS的方案
完全可以通过Quarkus的路由级TLS客户端认证配置实现需求,无需额外端口,仅需在现有application.properties中添加路由规则即可。
修改后的完整配置
# Server TLS quarkus.http.insecure-requests=disabled quarkus.http.ssl.certificate.key-store-file=tls/keystore.p12 quarkus.http.ssl.certificate.key-store-file-type=PKCS12 quarkus.http.ssl.certificate.key-store-password=123456 # 全局强制所有端点使用mTLS quarkus.http.ssl.client-auth=required quarkus.http.ssl.certificate.trust-store-file=tls/truststore.p12 quarkus.http.ssl.certificate.trust-store-password=123456 # 针对健康检查路径豁免mTLS(仅需HTTPS即可访问) quarkus.http.ssl.client-auth-mode."/q/health/*"=none
配置说明
- 全局配置
quarkus.http.ssl.client-auth=required确保除了指定豁免的路径外,所有端点都强制要求客户端证书认证(mTLS)。 quarkus.http.ssl.client-auth-mode."/q/health/*"是路由级覆盖配置:- 路径匹配规则
/q/health/*会覆盖所有Quarkus健康检查相关端点(包括/q/health/live、/q/health/ready、/q/health等默认路径)。 - 设置为
none表示这些路径仅需HTTPS加密,不需要客户端提供证书即可访问,正好满足Kubernetes探针的访问需求。
- 路径匹配规则
验证方式
- 访问健康端点:使用
curl https://<your-host>:8443/q/health/ready,无需携带客户端证书即可返回正常响应。 - 访问其他受保护端点:比如
curl https://<your-host>:8443/api/your-endpoint,若未携带客户端证书会返回403或证书错误,验证mTLS强制生效。
内容的提问来源于stack exchange,提问作者Uros
相关产品推荐
相关产品推荐

