Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Исправление CKA_ID


Нужен пакет opensc и библиотека rtpkcs11ecp (из драйверов или из комплекта разработчика)

Запускаем утилиту pkcs11-tool, библиотеку указываем через параметр --module

Параметр -О дает нам список объектов, -l указывает, что нужен логин, а в --pin передаем пин-код


Code Block
MacBook-Kirill:~ m$ pkcs11-tool --module /Library/Aktiv\ Co/Rutoken\ ECP/lib/librtpkcs11ecp.dylib -O -l --pin 12345678

Using slot 0 with a present token (0x0)

Public Key Object; GOSTR3410

 PARAMS OID: 06072a850302022301

 VALUE:      5fe400ff43fb74a9093e60c075d7c1a261da0b7f106144a13b869fc22fb1034e

             f43d02415eebb02b535c344de32a416b30229ec09b52d43c4ccd06cd2b2e9797

 label:

 ID:         011111

 Usage:      verify

Private Key Object; GOSTR3410

 PARAMS OID: 06072a850302022301

 label:

 ID:         011111

 Usage:      sign, derive

Certificate Object; type = X.509 cert

 label:      Rutoken Plugin

 ID:         011111


Например, мы считаем что “011111” это плохой ID и мы хотим его поменять

При этом необходимо сделать так, чтобы все CKA_ID были одинаковые

Нужно выполнить 3 последовательные команды, для закрытого ключа, для открытого и для сертификата

-y тип объекта, сертификат, закрытый ключ, и открытый ключ

-d старый CKA_ID

-e новый CKA_ID (нужно указывать в виде шестнадцатеричных чисел, 31 = это "1”)


Code Block
MacBook-Kirill:~ m$ pkcs11-tool --module /Library/Aktiv\ Co/Rutoken\ ECP/lib/librtpkcs11ecp.dylib -l --pin 12345678 -y cert -d "011111" -e "313233"

Using slot 0 with a present token (0x0)

Result:Certificate Object; type = X.509 cert

 label:      Rutoken Plugin

 ID:         313233



Code Block
MacBook-Kirill:~ m$ pkcs11-tool --module /Library/Aktiv\ Co/Rutoken\ ECP/lib/librtpkcs11ecp.dylib -l --pin 12345678 -y privkey -d "011111" -e "313233"

Using slot 0 with a present token (0x0)

Result:Private Key Object; GOSTR3410

 PARAMS OID: 06072a850302022301

 label:

 ID:         313233

 Usage:      sign, derive



Code Block
MacBook-Kirill:~ m$ pkcs11-tool --module /Library/Aktiv\ Co/Rutoken\ ECP/lib/librtpkcs11ecp.dylib -l --pin 12345678 -y pubkey -d "011111" -e "313233"

Using slot 0 with a present token (0x0)

Result:Public Key Object; GOSTR3410

 PARAMS OID: 06072a850302022301

 VALUE:      5fe400ff43fb74a9093e60c075d7c1a261da0b7f106144a13b869fc22fb1034e

             f43d02415eebb02b535c344de32a416b30229ec09b52d43c4ccd06cd2b2e9797

 label:

 ID:         313233

 Usage:      verify


Теперь снова делаем просмотр объектов и убеждаемся что CKA_ID правильный и одинаковый у всех 3х объектов


Code Block
MacBook-Kirill:~ m$ pkcs11-tool --module /Library/Aktiv\ Co/Rutoken\ ECP/lib/librtpkcs11ecp.dylib -O -l --pin 12345678

Using slot 0 with a present token (0x0)

Public Key Object; GOSTR3410

 PARAMS OID: 06072a850302022301

 VALUE:      5fe400ff43fb74a9093e60c075d7c1a261da0b7f106144a13b869fc22fb1034e

             f43d02415eebb02b535c344de32a416b30229ec09b52d43c4ccd06cd2b2e9797

 label:

 ID:         313233

 Usage:      verify

Private Key Object; GOSTR3410

 PARAMS OID: 06072a850302022301

 label:

 ID:         313233

 Usage:      sign, derive

Certificate Object; type = X.509 cert

 label:      Rutoken Plugin

 ID:         313233