как получить ключ клиента и корневой сертификат клиента для подключения к CockroachDB из клиента Java - PullRequest
0 голосов
/ 27 марта 2019

Я развернул кластер CockroachDB с одним экземпляром в моем кластере Kubernetes в DO по этой ссылке https://www.cockroachlabs.com/docs/stable/orchestrate-a-local-cluster-with-kubernetes.html.

Я перешел по этой ссылке, чтобы создать файл server.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

Мне нужно подключиться к CockroachDB, используя мой клиент Java. Как сгенерировать клиентский сертификат и ключ, чтобы я мог получить доступ к CockroachDB из Java?

Спасибо

1 Ответ

2 голосов
/ 27 марта 2019

Здесь есть несколько проблем:

  • сертификат, который вы запрашиваете у PKI k8s, не будет содержать никаких обязательных полей
  • формат ключа не будет работать для клиентов Java

Давайте обратимся к ним по одному:

Запрос сертификата клиента у PKI kubernetes

Сертификат клиента для пользователя с CockroachDB должен установить для общего имени субъекта имя пользователя. например: CN=root. Это также должно быть правильно настроено, чтобы разрешить использование ключа Client Authentication.

В kubernetes docs мы включаем пример для запуска клиента в том же кластере kubernetes. config для защищенных клиентов включает контейнер 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. Постройте страницу приложения Java .

...