メインコンテンツまでスキップ

pkcs11-tool-usage

適用対象:
OpenSC pkcs11-toolDuoKey PKCS#11 LibraryLinux / Windows

前提条件​

前提条件

  • OpenSC pkcs11-tool がインストールされていること
  • DuoKey PKCS#11 ライブラリがコンパイルされていること(cockpitPKCS11client.so または cockpitPKCS11client.dll)
  • 環境変数が構成されていること(実装に関する注記を参照)
注記
PIN 値(例: 1234)は、現在ライブラリによって検証されないため、任意の値を使用できます。pkcs11-tool の構文では必須ですが、DuoKey ライブラリでは無視されます。

一般情報​

トークン情報の表示​

pkcs11-tool --module ./cockpitPKCS11client.so --list-token-slots

サポートされているメカニズムの一覧表示​

pkcs11-tool --module ./cockpitPKCS11client.so --list-mechanisms

オブジェクトと鍵の一覧表示​

すべてのオブジェクトの一覧表示​

pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.so --list-objects

ラベルによる特定の鍵の一覧表示​

pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.so \
--list-objects \
--label "test-key-RSA-2048"

鍵タイプによるフィルタリング​

# List public keys only
pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.so \
--list-objects \
--type pubkey

# List by key type (e.g., AES)
pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.so \
--list-objects \
--key-type "AES"
注意
--key-type フィルタは pkcs11-tool バージョン 0.26 では壊れています(機能しません)。

公開鍵のエクスポート​

エクスポートできるのは公開鍵のみです。秘密鍵は Cockpit バックエンド内で保護されたままになります。

RSA 公開鍵のエクスポート​

pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.so \
--read-object \
--type pubkey \
--label "test-key-RSA-2048" \
--output-file test-key-RSA-2048.pubkey

ECC 公開鍵のエクスポート​

pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.so \
--read-object \
--type pubkey \
--label "test-key-ECC-256" \
--output-file test-key-ECC-256.pubkey

暗号化と復号​

重要
暗号化/復号操作の場合、pkcs11-tool は ID による鍵の検索のみをサポートします(ラベルによる検索はサポートしません)。上記の --list-objects コマンドを使用して、使用する鍵 ID を確認してください。

RSA 暗号化 / 復号​

# Encrypt
pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.so \
--encrypt \
--mechanism RSA-PKCS-OAEP \
--hash-algorithm sha256 \
--mgf MGF1-SHA256 \
--id "63336235376338372d333734662d346366332d396231332d626532353837333865666336" \
--input-file plaintext.txt \
--output-file encrypted.txt

# Decrypt
pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.so \
--decrypt \
--mechanism RSA-PKCS-OAEP \
--hash-algorithm sha256 \
--mgf MGF1-SHA256 \
--id "63336235376338372d333734662d346366332d396231332d626532353837333865666336" \
--input-file encrypted.txt \
--output-file plaintext-2.txt

AES-GCM 暗号化 / 復号​

# Encrypt with AES-GCM
pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.so \
--encrypt \
--mechanism AES-GCM \
--iv 000102030405060708090a0b0c0d0e0f \
--aad "48656c6c6f" \
--tag-bits-len 128 \
--id "30613263353462622d643436322d343864632d613132302d343135326661393033323063" \
--input-file plaintext.txt \
--output-file encrypted-aes.txt

# Decrypt with AES-GCM
pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.so \
--decrypt \
--mechanism AES-GCM \
--iv 000102030405060708090a0b0c0d0e0f \
--aad "48656c6c6f" \
--tag-bits-len 128 \
--id "30613263353462622d643436322d343864632d613132302d343135326661393033323063" \
--input-file encrypted-aes.txt \
--output-file plaintext-2-aes.txt

AES-CBC-PAD 暗号化 / 復号​

# Encrypt with AES-CBC-PAD
pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.so \
--encrypt \
--mechanism AES-CBC-PAD \
--iv 000102030405060708090a0b0c0d0e0f \
--id "30613263353462622d643436322d343864632d613132302d343135326661393033323063" \
--input-file plaintext.txt \
--output-file encrypted-aes-cbc.txt

# Decrypt with AES-CBC-PAD
pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.so \
--decrypt \
--mechanism AES-CBC-PAD \
--iv 000102030405060708090a0b0c0d0e0f \
--id "30613263353462622d643436322d343864632d613132302d343135326661393033323063" \
--input-file encrypted-aes-cbc.txt \
--output-file plaintext-2-aes-cbc.txt

オブジェクト管理​

オブジェクトの作成、読み取り、削除​

# Create an object
pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.so \
--write-object test-data.txt \
--label 'test-data-1' \
--type data

# Read back the object
pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.so \
--read-object \
--label 'test-data-1' \
--type data

# Delete the object
pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.so \
--delete-object \
--label 'test-data-1' \
--type data

鍵生成​

RSA 鍵ペアの生成​

pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.so \
--keypairgen \
--label 'test-pkcs11-generated-key-rsa' \
--key-type RSA:2048

AES 鍵の生成​

pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.so \
--keygen \
--label 'test-pkcs11-generated-key-aes-1' \
--key-type AES:256

pkcs11-tool に関する現在の制限​

操作ステータス
署名 / 検証基盤となる SDK ではサポートされていない
ラップ / アンラップまだ実装されていない