2015-09-18 3 views
0

Я пытаюсь установить set up a secure Docker Registry на две виртуальные машины (для HA) и задать вопрос о настройке SSL. По этой ссылке в документации, мне нужно иметь certs каталог с двумя файлами в нем:Как конвертировать JKS в сертификат/ключ реестра Docker?

  • registry.crt - СА Cert
  • registry.key - ??? (закрытый ключ?)

Мне предоставили Java JKS (хранилище ключей), в котором содержится сертификат CA подстановочного знака, который будет работать для этих виртуальных машин. Я был в состоянии успешно экспортировать сертификат из хранилища ключей, как так:

keytool -export -alias certalias -file registry.crt -keystore mycerts.jks 

До сих пор так хорошо: у меня есть registry.crt. Однако несколько связанных вопросов/проблем мешают мне выполнить эту установку:

  • Что такое *.key файл, как это отличается от CERT, и как извлечь его из JKS?
  • Где находится Docker/Registry, ожидающий этого каталога certs на каждой виртуальной машине? Возможно /home/myuser/? Является ли это местоположение настраиваемым?!?
  • Как поясняется ссылкой, требуется специальное дополнительное действие, если ваш сертификат CA является «посредником». Как я могу узнать, является ли мой сертификат посредником или нет?

ответ

2

Здесь действительно три вопроса. Вероятно, вы должны задать разные вопросы. Я не знаю ответа на ваш второй, но отвечу за двух других.


Простым термином в контексте SSL клиент инициирует безопасное соединение с использованием открытого ключа, содержащегося в сертификате. Только сервер, которому принадлежит соответствующий (закрытый) ключ, может ответить и, следовательно, установить соединение. (Там еще много чего.)

Короткий вопрос относительно хранилища ключей: Сделайте себе одолжение и используйте такой инструмент, как KeyStore Explorer. Нет привязанности, мне просто нравится инструмент. Экспорт закрытого ключа с помощью keytool не так прост. Насколько я знаю, вы не можете напрямую экспортировать закрытый ключ. You can however export to PKCS12 and use other tools like OpenSSL from there:

Keytool -importkeystore -srckeystore существующего-store.jks -destkeystore нового store.p12 -deststoretype PKCS12

Если у вас есть только один самозаверяющий сертификат (подписавший такой же, как предмет), вам не нужно беспокоиться о посредниках. Промежуточный сертификат означает, что сертификат, подписанный ЦС, который подписал ваш сертификат, сам подписывается еще одним ЦС.

CA 0 (signed by CA 0) - well known certificate, self-signed 
\_ CA 1 (signed by CA 0) - intermediate certificate 
    \_ Your Cert (signed by CA 1) 

Чтобы проверить целостность вашего сертификата, вся цепочка должна быть известна клиенту. Обычно в браузерах и операционных системах (CA 0) распространяются только СА, расположенные на самом верху, поэтому вам нужно публиковать сертификаты «между ними» - посредники (CA 1).

+0

Спасибо @musiKk (+1) - два быстрых наблюдения, если вы не возражаете: (1) будет ли это «экспортировать в PKCS12, а затем использовать OpenSSL для экспорта закрытого ключа *», если сертификат не является самоподписанным ? И (2) Я начинаю понимать, что такое посредник, но в чем их смысл? Почему бы просто не использовать хорошо известный самозаверяющий сертификат, подписанный CA0? Наверное, я просто не понимаю всю точку * «SSL cert ** chain **». Еще раз спасибо! – smeeb

+0

@smeeb 1. Да, не имеет значения, как выглядит сертификат. 2. Быть абсолютно честным: понятия не имею. Я предполагаю, что это скорее организационная вещь, но я не знаю. – musiKk