Подключение usb-токена jacarta в linux

СВК
Published

Инструкция скорее для памяти самому себе.

Для работы с jacarta-токенами в linux первым делом нужно скачать с офф. сайта https://www.aladdin-rd.ru/support/downloads/jacarta_client/ пакет ПК "Единый Клиент JaCarta 3.3" для вашей операционной системы. Так как у меня дебиан (LMDE), то скачал тот, что для убунту и еже с ней. Для доступа к vpn потребовалось дополнительно установить:

sudo apt install opensc openconnect libengine-pkcs11-openssl gnutls-bin pcscd network-manager-openconnect-gnome
sudo dpkg -i jcpkcs11-2_2.11.2.1052_x64.deb

Для того, чтобы линуксовая p11tool могла работать с этим токеном делаем ссылку:

sudo sh -c "echo 'module:/usr/lib/libjcPKCS11-2.so' > /usr/share/p11-kit/modules/opensc.module"\

После проведённых манипуляций проверяем что токен доступен:

p11tool --list-tokens

Получим что-то типа этого:

Token 0:
    URL: pkcs11:model=p11-kit-trust;manufacturer=PKCS%2311%20Kit;serial=1;token=System%20Trust
    Label: System Trust
    Type: Trust module
    Flags: uPIN uninitialized
    Manufacturer: PKCS#11 Kit
    Model: p11-kit-trust
    Serial: 1
    Module: p11-kit-trust.so


Token 1:
    URL: pkcs11:model=PRO;manufacturer=Aladdin%20R.D.;serial=4E46002023095046;token=username
    Label: username
    Type: Hardware token
    Flags: RNG, Requires login
    Manufacturer: Aladdin R.D.
    Model: PRO
    Serial: 4E4600121212121
    Module: /usr/lib/libjcPKCS11-2.so

Проверям что доступны все объекты в контейнере на токене:

p11tool --list-all --login pkcs11:model=PRO;manufacturer=Aladdin%20R.D.;serial=4E4600121212121;token=username

Будет запрошен пин-код для доступа и выведено на экран следующее:

Enter PIN: 
Object 0:
    URL: pkcs11:model=PRO;manufacturer=Aladdin%20R.D.;serial=4E4600121212121;token=username;id=%xx%xx%xx%xx%xx%xx;type=private
    Type: Private key (RSA-2048)
    Label: 
    Flags: CKA_WRAP/UNWRAP; CKA_PRIVATE; CKA_NEVER_EXTRACTABLE; CKA_SENSITIVE; 
    ID: xx:xx:xx:xx:xx:xx

Object 1:
    URL: pkcs11:model=PRO;manufacturer=Aladdin%20R.D.;serial=4E4600121212121;token=username;id=%xx%xx%xx%xx%xx%xx;object=XXXXXXXXXXXX;type=cert
    Type: X.509 Certificate (RSA-2048)
    Expires: Wed Sep  2 08:48:10 2026
    Label: XXXXXXXXXXXX
    ID: xx:xx:xx:xx:xx:xx

В выводе ID, username, serial - будут другие (тут я поменял от греха). Теперь можно создать соединение в NetworkManager. И, так как в GUI он не поддерживает работу с токеном (раньше так и было как сейчас не проверял) то добавляем из консоли. Для usercert берем то что было выведено на предыдущем этапе, в части касающейся x.509:

nmcli con add type vpn con-name vpn.server.ru ifname '*' vpn-type openconnect vpn.data 'usercert =  pkcs11:model=PRO;manufacturer=Aladdin%20R.D.;serial=4E4600121212121;token=username;id=%xx%xx%xx%xx%xx%xx;object=XXXXXXXXXXXX;type=cert, gateway = vpn.server.ru, protocol = anyconnect, cookie-flags = 2'

Connection 'vpn.server.ru' (2232beab-7f31-4f9e-a524-123a32a0ab9c) successfully added.

На этом всё если все сделано правильно, и я нигде не ошибся, то должно работать.