Page tree

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

  1. Создание ключей на токене

  2. Подготовим токен. 

    $ pkcs15-init -E
    $ pkcs15-init --create-pkcs15 --so-pin "87654321" --so-puk ""
    $ pkcs15-init --store-pin --label "User PIN" --auth-id 02 --pin "12345678" --puk "" --so-pin "87654321" --finalize

    В параметрах pin и so-pin можно указать желаемые пин-коды пользователя и администратора.

  3. Создаем ключевую пару RSA длины 2048 бит c ID "45" (id стоит запомнить, он понадобится при создании сертификата). Аутентификация на токене происходит под сущностью пользователя.

    $ pkcs15-init --generate-key rsa/2048 --auth-id 02 --id 45
    <вводим PIN пользователя>

     

  4. Проверим сгенерированный ключ:

    $ pkcs15-tool --list-keys
    Using reader with a card: Aktiv Rutoken ECP 00 00
    Private RSA Key [Private Key]
     Object Flags : [0x3], private, modifiable
     Usage : [0x4], sign
     Access Flags : [0x1D], sensitive, alwaysSensitive, neverExtract, local
     ModLength : 2048
     Key ref : 1 (0x1)
     Native : yes
     Path : 3f001000100060020001
     Auth ID : 02
     ID : 45

    Создание сертификата и импорт его на токен

  5. Определите URI RFC7512 ключа:

    p11tool --list-all
    ... pkcs11:model=PKCS%2315%20emulated;manufacturer=ZeitControl;...User%20PIN%29 pkcs11:model=PKCS%2315%20emulated;manufacturer=ZeitControl;...User%20PIN%29%28sig%29%29

    В нашем случае мы будем использовать вариант без %28sig%29, я буду называть его $TOKEN_URI. Я буду использовать ключ аутентификации как личный. Нам нужно будет определить URI закрытого ключа, который мы хотим использовать. Для этого используйте p11toolеще раз:

    ~# p11tool --outfile=/tmp/p11_output --login --list-all $TOKEN_URI
    

    Этот вывод будет содержать следующую информацию:

    ...
    Object 2:
            URL: pkcs11:model=PKCS%2315%20emulated;manufacturer=ZeitControl;...User%20PIN%29;id=%03;object=Authentication%20key;type=private
            Type: Private key (RSA-...)
            Label: Authentication key
            Flags: CKA_WRAP/UNWRAP; CKA_PRIVATE; CKA_NEVER_EXTRACTABLE; CKA_SENSITIVE;
            ID: 03
    ...
    

    Нам понадобится URLполе, которое я буду называть$KEY_URI

    Теперь у нас есть все необходимое для создания либо самозаверяющего сертификата, либо запроса на подпись сертификата (CSR), который будет отправлен в центр сертификации для подписи. Источник этой части — OpenSC wiki .

    ~# openssl req -engine pkcs11 -new -key "$KEY_URI" -keyform engine -x509 -out cert.pem -text
    

    Следуйте инструкциям мастера создания сертификата, отвечая на подсказки.

  • No labels