按照此链接https://www.cockroachlabs.com/docs/stable/orchestrate-a-local-cluster-with-kubernetes.html,我在DO的Kubernetes集群中部署了一个CockroachDB单实例集群。
我按照以下链接使用命令从https://kubernetes.io/docs/tasks/tls/managing-tls-in-a-cluster生成了一个server.crt文件:
kubectl get csr my-svc.my-namespace -o jsonpath='{.status.certificate}' \
| base64 --decode > server.crt
不确定是否能获得客户证书。
以下是命令的输出:
kubectl get csr
NAME AGE REQUESTOR CONDITION
default.client.root 44m system:serviceaccount:default:my-release-cockroachdb Approved,Issued
我需要使用Java客户端连接到CockroachDB。如何生成客户端证书和密钥,以便可以从Java访问CockroachDB?
谢谢
答案 0 :(得分:2)
这里有多个问题:
让我们一次解决一个问题:
从kubernetes PKI请求客户端证书
使用CockroachDB的用户的客户端证书必须将主题的“公用名”设置为用户名。例如:j
。还必须将其正确配置为允许使用CN=root
。
在kubernetes docs中,我们提供了一个在同一kubernetes集群中启动客户端的示例。用于安全客户端的config包含一个初始化容器,该容器请求客户端证书并将其提供给主要作业。
如果您的客户端在Kubernetes中运行,建议您为自己的客户端修改该配置。
Java客户端的密钥格式
Java客户端期望使用PKCS#8格式的密钥,而命令和Client Authentication
工具输出的证书都将输出PEM编码的密钥。
您可以使用openssl转换密钥:
request-cert
您可以在CockroachDB Build a Java app page上找到更多详细信息。