Базовые ОС:
DC – Windows Server 2022 (также проверено на Windows 2016)
1C: Ubuntu 24.04
| Название домена | testdomain.local |
| Название контроллера домена | testdomain-dc |
| Название сервера 1С | testdomain-1c |
| Пользователь домена для аутентификации | usr1c (права администратора пользователю не нужны) |
Документация на сайте 1С: https://its.1c.ru/db/v8327doc#bookmark:cs:TI000000106
Контроллер домена должен быть доступен с сервера 1с по полному имени: testdomain-dc.testdomain.local
Создание файла аутентификации
На контроллере домена или Windows машине, включенной в домен, запускаем:
ktpass -crypto RC4-HMAC-NT -princ usr1cv8/testdomain-1c.testdomain.local@TESTDOMAIN.LOCAL -mapuser usr1c -pass * -out usr1cv8.keytab
Targeting domain controller: testdomain-dc.testdomain.local
Using legacy password setting method
Successfully mapped usr1cv8/testdomain-1c.testdomain.local to usr1c.
Type the password for usr1cv8/testdomain-1c.testdomain.local:
Type the password again to confirm:
WARNING: pType and account type do not match. This might cause problems.
Key created.
Output keytab to Documents\usr1cv8.keytab:
Keytab version: 0x502
keysize 90 usr1cv8/testdomain-1c.testdomain.local@TESTDOMAIN.LOCAL ptype 0 (KRB5_NT_UNKNOWN) vno 3 etype 0x17 (RC4-HMAC) keylength 16 (0x59fc0f884922b4ce376051134c71e22c)
Параметры:
-crypto метод криптографии при аутентификации. Рекомендую выбрать RC4-HMAC. Если не указать, создадутся все возможные, что может затруднить работы аутентификации. Аутентификация AES у меня не заработала несмотря на включение в настройке пользователя галки "Использовать аутентификацию AES".
-princ имя принципала. Должно быть в точности таким и в таком регистре. пользователь_linux/fqdn_имя_хоста_1с@FQDN_ИМЯ_ДОМЕНА
-mapuser имя пользователя домена
-pass указать * чтобы ввести пароль в консоли, можно указать пароль напрямую
-out имя сформированного файла
Важно: ключ пользователя создается по текущей версии пользователя, смена пароля и т.п. сделают ключ недействительным.
Настройка на сервере 1С
Устанавливаем пакет
sudo apt install krb5-user
Указываем имя домена testdomain.local при установке
Настройка /etc/krb5.conf не требуется, как показал опыт. Если закомментировать все строчки в файле, все равно работает.
Переносим на сервер ключ usr1cv8.keytab
Прописать в файле для основного интерфейса
/etc/netplan/
network:
ethernets:
enp1s0:
dhcp4: true
nameservers:
addresses:
- 192.1.1.1 # адрес DNS сервера, для большей надежности лучше указать DNS сервер домена, но может работать и с другими вариантами
search:
- testdomain.local
После перезагрузки в файле должно /etc/resolv.conf появиться
nameserver 127.0.0.53
options edns0 trust-ad
search testdomain.local lan
Проверяем, что сервер правильно возвращает имя
hostname -f
testdomain-1c.testdomain.local
Проверяем работу аутентификации со стороны сервера 1С
kinit usr1c@TESTDOMAIN.LOCAL
Вводим пароль. Затем команда
klist
Должна вернуть
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: usr1c@TESTDOMAIN.LOCAL
Valid starting Expires Service principal
30.11.2025 11:39:52 30.11.2025 21:39:52 krbtgt/TESTDOMAIN.LOCAL@TESTDOMAIN.LOCAL
renew until 01.12.2025 11:39:48
Закрываем аутентификацию
kdestroy
Прописываем в базе 1С аутентификацию ОС в формате \\testdomain.local\user. Аутентификация по Netbios (\\TESTDOMAIN\User) имени работать не будет.
Замечания
- Регистрация сервера в DC необязательна, аутентификация работает и без этого
- На этапе отладки полезно установить переменную окружения KRB5_TRACE=имяфайла. Вывод в консоль у меня не сработал. Если keytab файл или имя сервера не соответствуют, то в trace файле ничего не появится. Прописать можно в файле сервиса 1С
Environment=KRB5_TRACE=/home/usr1cv8/krbtrace
- Замечания в инструкции от 1С про права доступа на файл keytab это только рекомендации. Аутентификация работает и при других настройках. Главное, чтобы были права на чтение для пользователя сервиса. Из соображений безопасности лучше установить владельца файла usr1cv8 и права 600, но можно это сделать и после первоначальной настойки.
Вступайте в нашу телеграмм-группу Инфостарт