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

配置Apache Pulsar OpenID Connect认证时证书验证失败求助

Apache Pulsar OpenID Connect 认证证书错误排查与解决

问题描述

配置Pulsar 3.0.x版本的OpenID Connect认证时,持续遇到证书相关错误:

  1. 依赖JVM信任库(已将证书导入jre/lib/security/cacerts),留空openIDTokenIssuerTrustCertsFilePath配置项,触发错误:
Caused by: java.lang.IllegalArgumentException: File does not contain valid certificates:
....
Caused by: java.security.cert.CertificateException: could not find certificate file:
at io.netty.handler.ssl.PemReader.readCertificates(PemReader.java:68) ~[io.netty-netty-handler-4.1.89.Final.jar:4.1.89.Final]
  1. 指定PEM文件路径openIDTokenIssuerTrustCertsFilePath=/opt/pulsar/certificates/certificate.pem,触发错误:
Caused by: java.security.cert.CertificateException: found no certificates in input stream

当前broker.conf关键配置:

authenticationProviders=org.apache.pulsar.broker.authentication.oidc.AuthenticationProviderOpenID
openIDAllowedTokenIssuers=https://login-stg.somewebsite.com/
openIDAllowedAudiences=https://auth0-some-website.com/maas, https://some-stg.some-dev.auth0.com/userinfo
openIDTokenIssuerTrustCertsFilePath=
openIDRoleClaim=https://some-web.com/role

原因分析

  1. 空配置项逻辑异常:AuthenticationProviderOpenID对空值的openIDTokenIssuerTrustCertsFilePath处理逻辑存在问题,未正确触发"使用JVM默认信任库"的分支,反而尝试读取空路径对应的文件。
  2. PEM文件有效性问题:指定的PEM文件不符合要求,可能是编码格式错误(如为DER格式而非PEM)、无有效证书内容,或证书链不完整。

解决步骤

方案1:正确使用JVM信任库

若依赖JVM信任库,不要留空配置项,直接移除openIDTokenIssuerTrustCertsFilePath,让Pulsar自动加载JVM默认信任库。

修改后的broker.conf相关配置:

authenticationProviders=org.apache.pulsar.broker.authentication.oidc.AuthenticationProviderOpenID
openIDAllowedTokenIssuers=https://login-stg.somewebsite.com/
openIDAllowedAudiences=https://auth0-some-website.com/maas, https://some-stg.some-dev.auth0.com/userinfo
openIDRoleClaim=https://some-web.com/role

同时确认证书已正确导入JVM信任库:

  1. 执行导入命令(默认密码为changeit):
keytool -importcert -file /path/to/your/certificate.crt -alias oidc-issuer -keystore $JAVA_HOME/jre/lib/security/cacerts
  1. 重启Pulsar Broker,确保信任库变更生效。

方案2:修复PEM文件配置

若必须指定PEM文件路径,需确保文件满足以下要求:

  1. 格式合规:文件内容以-----BEGIN CERTIFICATE-----开头,-----END CERTIFICATE-----结尾,中间为Base64编码的证书内容;若为证书链,需将根证书、中间证书、服务器证书按顺序放入同一文件。
  2. 有效性验证:通过以下命令确认文件有效:
openssl x509 -in /opt/pulsar/certificates/certificate.pem -text -noout

能正常输出证书信息则说明文件有效。
3. 权限配置:确保Pulsar进程对文件有读取权限:

chown pulsar:pulsar /opt/pulsar/certificates/certificate.pem
chmod 644 /opt/pulsar/certificates/certificate.pem
  1. 修正broker.conf中的路径配置,重启Broker。

额外排查点

  • 确认Pulsar进程使用的JVM与导入证书的JVM一致:通过ps aux | grep pulsar查看进程的JAVA_HOME路径,避免跨JVM导致信任库不生效。
  • 若使用自签名证书,需导入颁发者的根证书而非服务器证书。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 16:03:11