在k3d中为Bitnami MongoDB启用TLS时证书验证失败求助
问题解决:Bitnami MongoDB Helm Chart 自定义TLS证书配置失败
问题根源
你当前的mongodb-certs Secret只包含了CA证书和密钥,缺少MongoDB服务器所需的服务器证书和服务器密钥,导致Helm Chart自动生成了以Pod名称为CN的临时证书,这就是你通过openssl看到的陌生证书的来源。
修复步骤
1. 删除现有无效Secret
kubectl delete secret mongodb-certs
2. 创建包含完整证书文件的Secret
Bitnami MongoDB Chart要求自定义TLS Secret必须包含以下文件(文件名严格匹配):
mongodb-cert:你的服务器证书文件(对应你的certificate.cert)mongodb-key:你的服务器密钥文件(对应你的key.pem)mongodb-ca-cert:CA证书链文件(对应你的ca_chain.cert,优先使用完整链而非单一级CA)
执行创建命令:
kubectl create secret generic mongodb-certs \ --from-file=mongodb-cert=./certificate.cert \ --from-file=mongodb-key=./key.pem \ --from-file=mongodb-ca-cert=./ca_chain.cert
3. 重新部署MongoDB Helm Release
helm upgrade mongodb bitnami/mongodb -f values.yaml
(替换mongodb为你的Helm Release名称,values.yaml为你的配置文件)
4. 验证证书并重新连接
检查服务器证书
端口转发后执行:
echo Q | openssl s_client -connect localhost:27017 -showcerts
此时应该能看到你自定义的服务器证书信息,CN不再是Pod名称。
测试连接
使用CA证书链文件进行验证:
mongo --tls --host localhost --tlsCAFile ./ca_chain.cert --tlsCertificateKeyFile ./certkey.pem
额外注意事项
- 确保你的服务器证书的**SAN(Subject Alternative Name)**包含MongoDB的服务域名(如
mongodb、mongodb.<namespace>.svc.cluster.local)和Pod主机名,否则会出现主机名验证失败的问题。如果缺少,需要重新生成证书并添加对应SAN。 - 若启用客户端证书验证,还需在
values.yaml中添加tls.clientAuth: required配置。
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

