Обеспечение поддержки входа в macOS по токену или смарт-карте Рутокен
В качестве примера настроим аутентификацию для учетной записи mactest сертификатом некоего Фомичева Артема.
Данная инструкция применима к macOS версий 10.9 - 10.14
Предварительная подготовка.
1. Для аутентификации в системе используется сертификат RSA (1024 или более), выписанный на токен Рутокен ЭЦП 2.0. Также вам понадобится корневой сертификат (в виде .cer файла). Для аутентификации в OS X может использоваться любое устройство данного семейства:
- Рутокен ЭЦП 2.0
- Рутокен ЭЦП SC (Смарт-карты)
- Рутокен ЭЦП 2.0 Flash
- Рутокен ЭЦП 2.0 Bluetooth (при подключении по USB-кабелю)
2. На компьютере под управлением OS X должен быть установлен модуль поддержки Связки ключей (Keychain), который можно скачать с официального сайта по ссылке. После установки данного модуля токены Рутокен будут видны в Связке ключей. Связку ключей (Keychain) можно найти в Программы/Утилиты (Applications/Utilities).
Внешний вид панели Связки ключей при установленном модуле поддержки и подключенном к компьютеру Рутокен ЭЦП
Настройка аутентификации
1. Операции по настройки аутентификации осуществляются через Терминал (Terminal) который можно найти в Программы/Утилиты (Applications/Utilities).
Внешний вид Терминала
2. Первоначально необходимо активировать возможность аутентификации по смарт-картам с помощью команды:
sudo security authorizationdb smartcard enable
Данная команда возвращает YES (0) в случае успешного выполнения.
3. Привяжем приватный ключ на токене к аккаунту пользователя.
Выполним в Терминале:
sc_auth hash
Будет выведен список сертификатов и соответствующих им хешей, например в нашем случае это
2EBBFE1E97C69C112C8D62BAD14179DD700361D6 0x00000001 <blob>=0xD0A4D0BED0BCD0B8D187D0B5D0B220D090D180D182D0B5D0BC "\320\244\320\276\320\274\320\270\321\207\320\265\320\262\320\220\321\200\321\202\320\265\320\274 11DDC9B01B6FE8DCF5B30BF0577F345C6A9AC8B6 com.apple.systemdefault 1875A5E521113C138308DCC5E52A1F1B3BB382A6 com.apple.kerberos.kdc 11DDC9B01B6FE8DCF5B30BF0577F345C6A9AC8B6 com.apple.systemdefault 1875A5E521113C138308DCC5E52A1F1B3BB382A6 com.apple.kerberos.kdc
Первым указан сертификат, хранящийся на токене. Поскольку имя пользователя задано кириллицей, здесь оно отображается в нечитаемом формате.
Свяжем пользователя с приватным ключом на токене по хешу сертификата, выполнив
sudo sc_auth accept -u `whoami` -h ${HASH}
Где в качестве ${HASH} используется хеш сертификата, находящегося на токене. Его можно скопировать любым удобным способом из выдачи предыдущей команды. Обращаю ваше внимание, что с whoami используются обратные кавычки. Альтернативно можно здесь и далее вместо `whoami` использовать имя вашего пользователя (в данном случае - mactest).
Проверить корректность привязки можно с помощью команды
sc_auth list -u `whoami`
Команда должна вернуть указанный нами хеш.
4. В "Связке ключей" (Keychain) необходимо разместить корневой сертификат в связке "Система" (System). Сделать это можно перетащив сертификат в окошко связки "Система".
Установка корневого сертификата в Связку ключей "Система"
Для проверки корректности работы аутентификации извлечем токен Рутокен и перезагрузим систему. Первоначально мы увидим стандартный запрос пароля, однако с подключением токена вместо "пароль" в окошке ввода появится "PIN".
Запрос пин-кода токена при аутентификации
Вводим пин-код пользователя токена и успешно аутентифицируемся в системе.