【问题标题】:how to get a client key and client root cert for connecting to CockroachDB from Java client如何获取客户端密钥和客户端根证书以从 Java 客户端连接到 CockroachDB
【发布时间】:2019-03-27 16:25:27
【问题描述】:

我在 DO 上的 Kubernetes 集群中部署了 CockroachDB 单实例集群,点击此链接https://www.cockroachlabs.com/docs/stable/orchestrate-a-local-cluster-with-kubernetes.html

我按照此链接使用以下命令从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?

谢谢

【问题讨论】:

    标签: kubernetes csr cockroachdb


    【解决方案1】:

    这里有多个问题:

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

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

    从 kubernetes PKI 请求客户端证书

    使用 CockroachDB 的用户的客户端证书必须将主题的通用名称设置为用户名。例如:CN=root。这也必须正确配置以允许Client Authentication 使用密钥。

    kubernetes docs 中,我们包含了一个在同一个 kubernetes 集群中启动客户端的示例。用于安全客户端的 config 包含一个初始化容器,该容器请求客户端证书并使其可用于主作业。

    如果您的客户端在 Kubernetes 中运行,我建议为您自己的客户端调整该配置。

    Java 客户端的密钥格式

    Java 客户端需要 PKCS#8 格式的密钥,而您的命令和 request-cert 工具输出的证书都输出 PEM 编码的密钥。

    您可以使用 openssl 转换密钥:

    openssl pkcs8 -topk8 -inform PEM -outform DER -in client.myuser.key -out client.myuser.pk8
    

    您可以在CockroachDB Build a Java app page 上找到更多详细信息。

    【讨论】:

    • 谢谢马克。我想从我的 K8 下载 CockroachDB 的 ca.key 和 ca.crt。有没有办法在 kubectl 中使用命令行来做到这一点?
    • 我找到你了,马克。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多