如何获取用于从Java客户端连接到CockroachDB的客户端密钥和客户端根证书

时间:2019-03-27 16:25:27

标签: kubernetes csr cockroachdb

按照此链接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?

谢谢

1 个答案:

答案 0 :(得分:2)

这里有多个问题:

  • 您从k8s PKI请求的证书将没有任何必填字段
  • 密钥格式不适用于Java客户端

让我们一次解决一个问题:

从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上找到更多详细信息。