代码之家  ›  专栏  ›  技术社区  ›  Katlock

如何从Java客户端获取连接蟑螂的客户端密钥和客户端根证书

  •  0
  • Katlock  · 技术社区  · 6 年前

    我已经在我的Kubernetes集群中部署了一个CockroachDB单实例集群 https://www.cockroachlabs.com/docs/stable/orchestrate-a-local-cluster-with-kubernetes.html .

    我跟踪此链接生成服务器.crt文件来源 https://kubernetes.io/docs/tasks/tls/managing-tls-in-a-cluster 使用命令:

    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 回复  |  直到 6 年前
        1
  •  2
  •   Marc    6 年前

    这里有很多问题:

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

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

    从kubernetes PKI请求客户端证书

    蟑螂用户的客户端证书必须将使用者的公用名设置为用户名。如: CN=root . 这也必须正确配置以允许 Client Authentication 在密钥使用中。

    kubernetes docs ,我们提供了一个在同一个kubernetes集群中启动客户机的示例。这个 config for secure clients包含一个init容器,该容器请求客户端证书并使其可用于主作业。

    如果您的客户机运行在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 .