PKCS#11セットアップ#
インストール#
NetHSM PKCS#11モジュールは、コンパイル済みのバイナリとして入手するか、ソースからコンパイルすることができます。
コンパイル済みバイナリ#
リポジトリの`リリースページ<https://github.com/Nitrokey/nethsm-pkcs11/releases>`__ から、お使いのシステムに対応するモジュールファイルをダウンロードしてください。
モジュール・ファイルを、PKCS#11アプリケーションがそれを見つけることを期待するディレクトリにコピーする。
ソースからコンパイルする#
`Rust toolchain<https://www.rust-lang.org/tools/install>`__ をインストールする。
`リリースページ<https://github.com/Nitrokey/nethsm-pkcs11/releases>`__ からソースをダウンロードして展開するか、`リポジトリ<https://github.com/Nitrokey/nethsm-pkcs11>`__ をクローンしてください。
cargo build --release
をソース・ディレクトリで実行する。
構成#
デフォルトでは、モジュールは設定ファイルを以下の場所で検索する:
/etc/nitrokey/p11nethsm.conf`
/usr/local/etc/nitrokey/p11nethsm.conf`
$HOME/.config/nitrokey/p11nethsm.conf`
複数のファイルが存在する場合、すべての設定ファイルのスロットがモジュールで使用されるように、設定はマージされます。
env 変数``P11NETHSM_CONFIG_FILE`` (e.g.``P11NETHSM_CONFIG_FILE=./p11nethsm.conf``) を使って、設定ファイルの場所を手動で設定することができます(この設定ファイルだけが読み込まれます)。
設定ファイルのフォーマット#
コンフィギュレーションはyamlフォーマットである:
# Set this option to true to enable the compatibility option for the C_SetAttributeValue() function.
# This allows the applications using the Java Sun PKCS11 module (like EJBCA) to generate keys.
# When using this, the names given to the keys will be ignored and the keys will have random names.
# Under the hood it will store in memory the name given to the key when calling C_SetAttributeValue(). When a certificate is uploaded it will check if the name was previously passed to C_SetAttributeValue() and translate it to the real name on the NetHSM.
enable_set_attribute_value: false
# You can set the log file location here.
# If no value is set the module will output to stderr.
# If a value is set it will output to the file.
log_file: /tmp/p11nethsm.log
# Optional log level
log_level: Debug
# Each "slot" represents a NetHSM server
slots:
- label: LocalHSM # Name you NetHSM however you want
description: Local HSM (docker) # Optional description
# Users connecting to the NetHSM server
operator:
username: "operator"
password: "env:LOCALHSMPASS"
administrator:
username: "admin"
# List the NetHSM instances
instances:
- url: "https://keyfender:8443/api/v1" # URL to reach the server
# When the NetHSM has a self-signed certificate, it can be verified by a sha256 fingerprint of the NetHSM's certificate:
sha256_fingerprints:
- "31:92:8E:A4:5E:16:5C:A7:33:44:E8:E9:8E:64:C4:AE:7B:2A:57:E5:77:43:49:F3:69:C9:8F:C4:2F:3A:3B:6E"
インスタンス#
同じスロットに複数のNetHSMインスタンスが表示されている場合は、これらのインスタンスをクラスタに構成する必要があります。ユーザーとキーの認証情報は、すべてのインスタンスで同じでなければなりません。
モジュールはラウンドロビン方式でインスタンスを使用し、1つが失敗したら別のインスタンスを試す。
ユーザー#
オペレータと管理者ユーザはどちらも任意ですが、ユーザが設定されていない場合、モジュールは起動しません。これは、モジュールを管理者ユーザーだけ、オペレーターユーザーだけ、または両方を同時に設定できるようにするためです。
2人のユーザーが設定されると、モジュールはデフォルトでオペレータを使用し、アクションが必要なときだけ管理者ユーザーを使用します。
通常のPKCS11ユーザーはNetHSMオペレータに、PKCS11 SOはNetHSM管理者にマッピングされます。
パスワード#
パスワードは複数の方法で提供することができる:
コンフィギュレーション``password: "mypassword"`` のプレーンテキストで。
env:
のプレフィックスを持つモジュールが読み込む環境変数:env:ENV_STORING_THE_PASSWORD
pcks11-tool の例では、pkcs11 のログイン機能を使ってください:pkcs11-tool --module libnethsm_pkcs11.so -p opPassphrase` 管理者パスワードを入力するには、代わりに``--so-pin`` を使用する必要があります:pkcs11-tool --module libnethsm_pkcs11.so --login --login-type so --so-pin Administrator`
ユーザーのパスワードが設定ファイルに設定されていない場合、パスワードを入力するためにログインが要求されます(第3の方法)。
動作していないNetHSMは、トークンが存在しないスロットとみなされます。