16 червня 2016 р.

eToken PKSC11 створення та використання ключів у Ubuntu

"Колись працював з модулем  для зберігання ключів : Aladin eToken NG-OTP 72k (Java) (hardware token).
Aladin eToken NG-OTP 72k (Java)
Вирішив підключити під ОС Ubuntu 16.04.

SafeNet Authentication Client

Так як зараз за  програмне забезпечення цих модулів відповідає компанія SafeNet,  то вона має програмні клієнти та драйвери на кшталт "SafeNet Authentication Client".  Запитати у розробника ви можете за посиланням. Але воно розповсюджується не вільно для нових версій. А ось попередню версію "SafeNet Authentication Client" можна запитати і отримати у аладіна.
Я запитав та отримав версію 9.1 для тестування.

Authentication Client 9.1
Завантажив файл SAC_9_1_Linux.zip, видобув до теки SAC_9_1_Linux.
cd  ./SAC_9_1_Linux/Installation/Standard/DEB
cp install-portuguese_SafenetAuthenticationClient-9.1.7-0_amd64.deb.sh install-english_SafenetAuthenticationClient-9.1.7-0_amd64.deb.sh
vi install-english_SafenetAuthenticationClient-9.1.7-0_amd64.deb.sh
редагую зміну lang na lang=en-EN
chmod +x install-english_SafenetAuthenticationClient-9.1.7-0_amd64.deb.sh
sudo ./install-english_SafenetAuthenticationClient-9.1.7-0_amd64.deb.sh
Після встановлення маємо бібліотеки для PKSC#11 /usr/lib/libeTPkcs11.so, та програми  "SafeNet Authentication Client", "SafeNet Authentication Client Tools".
SafeNet Authentication Client Tools

Mozila Thunderbird та Firefox

Токен можна використати у Mozila Thunderbird та Firefox якщо підключити модуль прописав шлях до бібліотеки.
Шлях до бібліотеки

Інформація про токен
 Для роботи з ключами є різні програм, наприклад програми що можуть імпортувати до ключа вже згенеровані приватні ключі, або згенерувати ключ виключно за допомогою токену, і ключ ніколи не вийде за межі токену, тільки публічний ключ може бути доступний.

Google Chrome

За цією інструкцією CommonAccessCard - Community Help Wiki:
1. Встановлюю NSS tools для Debian/Ubuntu:
$ sudo apt-get install libnss3-tools

2. Додаю свій модуль "CAC Module" pkcs11 library
2b. Закрити браузер Chrome
3. Перевірити чи токен всталенно, чи ви в домашній теці, відкрити термінал:
$ cd ~
$ modutil -dbdir sql:.pki/nssdb/ -add "CAC Module Etoken" -libfile /usr/lib/libeTPkcs11.so
WARNING: Performing this operation while the browser is running could cause
corruption of your security databases. If the browser is currently running,
you should exit browser before continuing this operation. Type 
'q <enter>' to abort, or <enter> to continue: 

Module "CAC Module eToken" added to database.

4. Перевірити що бібліотека додана коректно:
$ modutil -dbdir sql:.pki/nssdb/ -list

5. Я маю результат на кшталт цього:

Listing of PKCS #11 Modules
-----------------------------------------------------------
  1. NSS Internal PKCS #11 Module
  slots: 2 slots attached
 status: loaded

  slot: NSS Internal Cryptographic Services
 token: NSS Generic Crypto Services

  slot: NSS User Private Key and Certificate Services
 token: NSS Certificate DB

  2. CAC Module eToken
 library name: /usr/lib/libeTPkcs11.so
  slots: 10 slots attached
 status: loaded

  slot: AKS ifdh 00 00
 token: eToken

  slot: 
 token: 

  slot: 
 token: 

  slot: 
 token: 

  slot: ETOKEN HID READER 0
 token: 

  slot: ETOKEN HID READER 1
 token: 

  slot: ETOKEN HID READER 2
 token: 

  slot: ETOKEN HID READER 3
 token: 

  slot: 
 token: 

  slot: 
 token: 
-----------------------------------------------------------
Тепер при налаштуваннях сертифікатів у бразуері Chrome, буде запити на пароль токену:
Google Chrome запит на токен пароль
А після вводу паролю буде доступен сертифікат користовача у Google Chrome що зберігається у токені:
cертифікат користовача у Google Chrome що зберігається у токені

p11tool

$ p11tool
Програма 'p11tool' наразі не встановлена. Ви можете встановити її набравши таке:
sudo apt install gnutls-bin
$ sudo apt install gnutls-bin
p11tool --list-tokens --provider=/usr/lib/libeTPkcs11.so
Token 0:
    URL: pkcs11:model=eToken;manufacturer=SafeNet%2c%20Inc.;serial=XXXXXX;token=eToken
    Label: eToken
    Type: Hardware token
    Manufacturer: SafeNet, Inc.
    Model: eToken
    Serial: XXXXXX
    Module: (null)
p11tool  --provider=/usr/lib/libeTPkcs11.so  --generate-rsa --bits 2048 --label "MyNewKey" --login --outfile MyNewKey.pub "pkcs11:model=eToken;manufacturer=SafeNet%2c%20Inc.;serial=XXXXXX;token=eToken"
Token 'eToken' with URL 'pkcs11:model=eToken;manufacturer=SafeNet%2c%20Inc.;serial=XXXXXX;token=eToken' requires user PIN
Enter PIN:  
Вводимо пін від токену, додатковий RSA пароль (в залежності від налаштувань ключа), після деякої затримки - генерації ключа, створено буле файл MyNewKey.pub котрий містить публічний ключ.

Надалі повинно спрацювати використання приватного ключа, але у мене не спрацювало:
certtool --provider=/usr/lib/libeTPkcs11.so  --generate-request --load-privkey "pkcs11:model=eToken;manufacturer=SafeNet%2c%20Inc.;serial=XXXXXX;token=eToken" --load-pubkey MyNewKey.pub --outfile request.pem

pkcs11

$ pkcs11-tokens -m /usr/lib/libeTPkcs11.so

arning: PKCS#11 provider has no digest service
This HSM will not work with BIND 9 using native PKCS#11.

DEFAULTS
    rand_token=0x55f5ff4837e0
    best_rsa_token=0x55f5ff4837e0
    best_dsa_token=(nil)
    best_dh_token=(nil)
    digest_token=(nil)
    best_ec_token=(nil)
    best_gost_token=(nil)
    aes_token=(nil)

TOKEN
    address=0x55f5ff4837e0
    slotID=0
    label=eToken                          
    manufacturerID=SafeNet, Inc.                   
    model=eToken          
    serialNumber=XXXXXXX       
    supported operations=0x6 (RAND,RSA) 
$ pkcs11-keygen -m /usr/lib/libeTPkcs11.so -l myKK -b 2048

Enter Pin: 
Warning: PKCS#11 provider has no digest service
This HSM will not work with BIND 9 using native PKCS#11.

(pkcs11-keygen:8625): Gtk-WARNING **: /build/gtk+2.0-KsZKkB/gtk+2.0-2.24.30/gtk/gtkwidget.c:10000: widget class `GtkProgressBar' has no property named `visible'
Key pair generation complete. 
$ pkcs11-list -m /usr/lib/libeTPkcs11.so
Enter Pin: 
Warning: PKCS#11 provider has no digest service
This HSM will not work with BIND 9 using native PKCS#11.
object[0]: .....

object[6]: handle 128647179 class 3 label[4] 'myKK' id[0] 
object[7]: handle 32636940 class 2 label[4] 'myKK' id[0] 
Далі буде...



Немає коментарів:


Коли забув ти рідну мову, біднієш духом ти щодня...
When you forgot your native language you would become a poor at spirit every day ...

Д.Білоус / D.Bilous
Рабів до раю не пускають. Будь вільним!

ipv6 ready