如何从 Java 客户端获取用于连接到 CockroachDB 的客户端密钥和客户端根证书
how to get a client key and client root cert for connecting to CockroachDB from Java client
我已经在 DO 上的 Kubernetes 集群中部署了一个 CockroachDB 单实例集群 link https://www.cockroachlabs.com/docs/stable/orchestrate-a-local-cluster-with-kubernetes.html。
我按照这个 link 使用以下命令从 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?
谢谢
这里有多个问题:
- 您从 k8s PKI 请求的证书将没有任何必填字段
- 密钥格式不适用于 java 客户
让我们一次解决一个问题:
正在从 kubernetes PKI 请求客户端证书
使用 CockroachDB 的用户的客户端证书必须将主题的公用名设置为用户名。例如:CN=root
。这也必须正确配置以允许 Client Authentication
在密钥用法中。
在安全客户端的 kubernetes docs, we include an example to bring up a client within the same kubernetes cluster. The 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 上找到更多详细信息。
我已经在 DO 上的 Kubernetes 集群中部署了一个 CockroachDB 单实例集群 link https://www.cockroachlabs.com/docs/stable/orchestrate-a-local-cluster-with-kubernetes.html。
我按照这个 link 使用以下命令从 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?
谢谢
这里有多个问题:
- 您从 k8s PKI 请求的证书将没有任何必填字段
- 密钥格式不适用于 java 客户
让我们一次解决一个问题:
正在从 kubernetes PKI 请求客户端证书
使用 CockroachDB 的用户的客户端证书必须将主题的公用名设置为用户名。例如:CN=root
。这也必须正确配置以允许 Client Authentication
在密钥用法中。
在安全客户端的 kubernetes docs, we include an example to bring up a client within the same kubernetes cluster. The 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 上找到更多详细信息。