воскресенье, 30 декабря 2012 г.

Проверка сервера через сертификаты

Итак, я пересаживаюсь на новую машину, захожу по ssh на сервер и вижу знакомую надпись:

authenticity of this host is can`t be established
key fingerprint is xxxxxxxxxxxx
are you sure?

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

Можно хранить фингерпринты где-нибудь в интернете, в доступном месте. Можно завести dns-записи, но для этого нужен свой dns-сервер, ибо я еще не видел сервисов умеющих заводить их. И, наконец, можно подписать ключи серверов ключом центра авторизации, и тогда на клиентской машине нужно будет добавить только одну строчку в known_hosts и мы автоматически начинаем доверять всем своим серверам.

создаем ключ CA

ssh-keygen -t ecdsa -f /etc/ssh/ca-key

при этом создается обычная пара ssh ключей: ca-key (приватный) и ca-key.pub (открытый, он нам понадобится на клиентских машинах)

подписываем хост-ключи сервера

ssh-keygen -s /etc/ssh/ca-key -h -I server.com /etc/ssh/ssh_host_ecdsa_key.pub

получаем файл /etc/ssh/ssh_host_ecdsa_key-cert.pub

настраиваем sshd

в файле /etc/ssh/sshd_config добавляем строку

HostCertificate /etc/ssh/ssh_host_ecdsa_key-cert.pub

перезапускаем ssh

настраиваем клиент

содержимое ca-key.pub (это одна строка) копируем в known_hosts. В начале этой строки добавляем @cert-authority server_name

при этом ключи самого сервера добавлять не нужно.

таким образом подписав нашим ca-key ключи всех серверов, мы сможем проверять валидность их ключей без изменения known-hosts

Комментариев нет:

Отправить комментарий