嗨,我在用MinIO配置OIDC(Keycloak)时不知所措(两者都部署在同一个AKS集群上)。我已经为两者配置了一个Ingress,两者都使用我从DigiCert获得的相同的认证。然而,每当我配置OIDC(通过Helm值或在控制台中手动)时,我都会得到以下错误:
Get "https://<FQDN_KEYCLOAK>/realms/master/.well-known/openid-configuration": tls: failed to verify certificate: x509: certificate signed by unknown authority
我尝试手动将tls secret挂载到MinIO pod上的/etc/minio/certs
中,但出现了相同的错误。有什么建议吗?谢谢
UPDATE:我在集成Keycloak(OIDC)和ArgoCD时也遇到了同样的异常。
1条答案
按热度按时间6rqinv9w1#
因为你有一个错误“
TLS: failed to verify certificate: x509: certificate signed by unknown authority
“,这应该意味着Keycloak服务器使用的证书不受运行MinIO和ArgoCD的系统的信任。您应该确保为您的证书签名的证书颁发机构(CA)受到MinIO和ArgoCD系统的信任。既然你提到你使用的是DigiCert的证书,它不被识别是很奇怪的,因为DigiCert是一个著名的CA。
首先,检查证书是否正确安装在Keycloak服务器上。您可以使用OpenSSL或online SSL checkers等工具验证证书安装。
运行此命令时,请在输出中查找“Certificate chain”部分。如果您看到一个证书,请确保链中所有级别的证书都存在并且正确configured in your server configuration, which, in this case, is Keycloak。
证书必须连接在一个文件(
https-certificate-file
)中,首先是服务器的证书,然后是中间证书,最后是根证书,以形成一个完整的链。更新MinIO和ArgoCD系统上的证书信任存储区,以包含签署Keycloak证书的CA证书。
添加证书后重新启动MinIO服务器。
所有这一切都假设错误消息中指定的路由器正确解析到您的Keycloak服务器,并且没有网络问题阻止连接。
您可以使用
curl
手动测试证书验证:如果curl命令成功而没有证书错误,则表明证书已正确安装并受信任。
这是一个非常奇怪的错误,因为我已经在其他K8s环境中使用Keycloak配置了这两个服务,它似乎只是这个(在AKS上运行)。
证书肯定是使用Bitnami chart安装在Keycloak中的,curl命令没有返回cert错误(使用Keycloak和argo的cursor都是如此)。
由于您已经在其他Kubernetes环境中成功配置了这些服务,并且仅在此特定AKS集群中遇到问题,因此问题应该特定于此特定AKS环境或所涉及的证书。成功的
curl
命令测试是一个强有力的指示,表明Keycloak服务器上的证书已正确安装,并且可以从集群中访问。所以检查aks特定的配置:AKS可能有一些影响TLS验证的特定安全策略或网络配置。确认没有可能干扰Keycloak连接的配置。
并在pod中查看已安装的证书:检查MinIO和ArgoCD pod以查看CA证书是否正确安装和可访问。
确保没有Kubernetes网络策略或Azure特定的防火墙规则可能会干扰证书验证过程。
例如,在集群中的其他Pod内部使用
curl
来排除MinIO或ArgoCD特定的任何网络问题。OP在评论中补充说:
最后我把它弄清楚了,这是由于两个问题:
auth.<BASE_URL>
和argo.<BASE_URL>
,切换到使用letsencrypt,/opt/bitnami/keycloak/certs
正确:
使用单个证书:
但是,根据颁发证书的证书颁发机构(CA)和所涉及的应用程序,SSL证书可能并不总是无缝工作。而且,将单个证书用于多个服务有时会带来复杂性或限制。
auth.<BASE_URL>
和argo.<BASE_URL>
)颁发单独的证书,从而隔离每个服务的SSL配置。这通常更容易管理和故障排除。Let's Encrypt的自动化功能还可以简化续订过程,进一步减少维护开销。
转换为PEM格式:
证书可以有多种格式,如DER,PEM,PFX等。所涉及的应用程序(在本例中,Bitnami的Keycloak图表)可能期望证书采用特定格式。
PEM(Privacy-Enhanced Mail)是最常用的证书格式之一,可通过
-----BEGIN CERTIFICATE-----
和-----END CERTIFICATE-----
分隔符识别。并非所有软件都可以读取所有格式,因此转换为PEM通常是兼容性所必需的。安装到
/opt/bitnami/keycloak/certs
:这是Bitnami Keycloak Helm chart特有的。Helm charts通常会定义特定的路径,以查找配置或证书。您需要确保PEM格式的证书放在这个特定的目录中,以便Keycloak正确使用它们。