Как я могу сгенерировать пару ключей Salt minion, используя OpenSSL?

Я создаю поваренную книгу шеф-повара, чтобы настроить Salt и управлять обменом ключами между миньонами и мастерами.

Я знаю, что Соленый миньон будет автоматически генерировать ключи в /etc/salt/pki/minion/minion.{pem,pub} когда он только начинается, но я не могу зависеть от времени, когда информация будет доступна в сценарии.

Из документации Salt я мог сгенерировать ключи на мастере с salt-key --gen-keys=[key_name], Однако по соображениям безопасности я бы предпочел, чтобы ключ генерировался на миньоне, поэтому только открытый ключ когда-либо должен покинуть машину.

Ключи выглядят как стандартные ключи RSA. Каковы будут параметры openssl или ssh-keygen для генерации ключа, который будет принят Salt? Я просто ищу длину в битах и ​​другие параметры, которые Солт ищет в таком ключе.

Спасибо большое!

3 ответа

Я хотел бы использовать salt-key создать ключ.

[me@elsapo ~]$ sudo salt-key --gen-keys=minion02 --gen-keys-dir=/tmp/testkey

return:
    37:6e:6d:42:ba:c6:da:1d:46:28:fb:bc:ce:27:10:13:7c:a2:d8:de:f9:d5:ba:6a:01:4a:f4:72:ad:bd:1b:20

[me@elsapo ~]$ ls /tmp/testkey

minion02.pem  minion02.pub

Затем вы можете переместить файлы ключей pem и pub в любое место.

У меня похожая проблема с использованием соли в Vagrant. Правильное решение, конечно, всегда будет работать

salt-key --gen-keys=master

В моем случае, однако, ключи должны быть сгенерированы на главном компьютере (где Salt не установлен), но поставщик Vagrant для соли ожидает найти их, чтобы он мог скопировать их на новую виртуальную машину.

Вы можете генерировать их с помощью OpenSSL. Сгенерируйте закрытый ключ с помощью:

openssl genrsa -out master.pem

а затем открытый ключ с:

openssl rsa -in master.pem -pubout -out master.pub

Ключи, сгенерированные таким образом, по-видимому, имеют те же значения по умолчанию, что и ключи с солью, но YMMV.

Код находится в salt / crypt.py: https://github.com/saltstack/salt/blob/2014.1/salt/crypt.py

Похоже, он использует from M2Crypto import RSA а потом gen = RSA.gen_key(keysize, 65537, callback=lambda x, y, z: None)

M2Crypto - это оболочка для OpenSSL.

M2Crypto.RSA.gen_key определяется здесь: https://github.com/M2Crypto/M2Crypto/blob/master/M2Crypto/RSA.py

Возвращает объект M2Crypto.RSA.RSA.

Найти размер ключа было нелегко, по умолчанию он был 4096 в config.py: https://github.com/saltstack/salt/blob/1bfed117560fbde11c88ad7a013be76dc6eadf0f/salt/config.py

Открытый ключ сохраняется в формате PEM.

Похоже, вы могли бы сделать это с OpenSSL. Я не проверял это.

Другие вопросы по тегам