テクノロジーガイド

Ubuntu上での SoftHSM インストールと初期化

2 min read セキュリティ 更新されました 22 Sep 2025
UbuntuでのSoftHSMインストールと初期化ガイド
UbuntuでのSoftHSMインストールと初期化ガイド

概要

SoftHSM は OpenDNSSEC プロジェクトの一部として発展した、PKCS#11 を介して利用できるソフトウェアベースの暗号ストアです。物理 HSM(NitroKey、Smartcard-HSM など)が行う秘密鍵の生成や署名/復号を、ソフトウェア上で再現します。主な用途はテスト環境やハードウェア調達が難しい環境での鍵管理の代替です。

重要: 本番環境ではハードウェア HSM の使用を推奨します。SoftHSM は利便性と移植性を優先したツールです。

主な用語(1行定義)

  • PKCS#11: 暗号デバイス(HSM/スマートカード)とのやり取りのための標準インターフェース。
  • トークン: PKCS#11 で管理される鍵・証明書の論理コンテナ。
  • SO PIN / User PIN: トークン管理者(SO)と利用者用のパスフレーズ。

対象読者と主な目的

この記事は、Ubuntu 上で SoftHSM をソースからビルドして初期化し、OpenSC ツールで動作確認することを目的としたエンジニアや運用担当者向けです。前提として基本的な Linux コマンド操作とビルドツールの利用経験があることを想定します。

関連用途キーワード

  • SoftHSM インストール
  • SoftHSM 初期化
  • PKCS#11 Ubuntu
  • OpenDNSSEC SoftHSM

必要条件と依存関係

SoftHSM は OpenSSL または Botan を暗号バックエンドとして利用できます。Botan を使う場合は GNU MP サポート(–with-gnump)を有効にすると公開鍵演算のパフォーマンスが向上します。コンパイルには典型的なビルドツール(gcc、make、pkg-config)とヘッダファイルが必要です。

推奨: 本番相当のテストを行う場合、バックアップ方針とアクセス制御(ファイルパーミッション、専用ユーザ)を事前に決めてください。

ダウンロードと展開

ソースは OpenDNSSEC の配布サイトから取得します。例:

wget https://dist.opendnssec.org/source/softhsm-2.3.0.tar.gz

SoftHSM ソースアーカイブのダウンロード画面

ダウンロード後に展開します:

tar xzf softhsm-2.3.0.tar.gz

アーカイブを展開する様子

configure の実行と依存解決

ソースディレクトリに移動して configure スクリプトを実行し、必要なライブラリやヘッダが揃っているか確認します。

./configure

configure 実行例

もし “OpenSSL header” が見つからない等のエラーが出た場合は、開発用パッケージをインストールします(例: openssl-dev)。Ubuntu 系ではパッケージ名が異なることがあるため、apt のパッケージ名を確認してください。

例:

sudo apt-get install libssl-dev

OpenSSL 開発ヘッダ不足のエラーメッセージ

インストール後に再度 configure を実行し、すべての依存が揃ったことを確認します。

configure が成功した出力例

configure のオプション一覧は以下で確認できます:

./configure --help

主要なオプション例:

--disable-ecc       Disable support for ECC (default enabled)
--disable-gost      Disable support for GOST (default enabled)
--with-crypto-backend   Select crypto backend (openssl|botan)
--with-openssl=PATH Specify prefix of path of OpenSSL
--with-botan=PATH   Specify prefix of path of Botan
--with-migrate      Build the migration tool. Requires SQLite3
--with-objectstore-backend-db   Build with database object store (SQLite3)
--disable-p11-kit   Disable p11-kit integration (default enabled)

注: 上記オプションの解説は英語の configure ヘルプに準拠します。必要に応じて –with-openssl などでカスタムパスを指定してください。

ビルドとインストール

ソースをコンパイルします:

make

make 実行例

インストール(通常は root 権限):

sudo make install

make install の出力例

設定ファイル

デフォルトの設定ファイルは /etc/softhsm2.conf です。別の場所に置く場合は環境変数 SOFTHSM2_CONF で指定できます。

export SOFTHSM2_CONF=Path_of_SoftHSM_Conf_file

設定例やデフォルトの設定は次のスクリーンショットを参照してください。

デフォルトの softhsm2.conf のサンプル表示

重要: 設定ファイルに指定するトークン保存ディレクトリは、バックアップ方針とファイル権限を考慮して決めてください。

トークンの初期化

SoftHSM を利用するには、まずトークンを初期化します。softhsm2-util を使う例:

softhsm2-util --init-token --slot 0 --label 'Token-1'

トークン初期化のプロンプト例

初期化時には SO PIN(再初期化用)と User PIN(アプリケーションが利用する PIN)を設定します。推奨事項:

  • SO PIN は厳重に管理し、複数人での秘密分散(M of N)を検討する。
  • User PIN はアプリ側のアクセス制御ポリシーに合わせて短期間でのローテーションを可能にする。

トークンをラベルやシリアル番号で見つける方法、スロット情報の取得などは softhsm2-util のサブコマンドで確認できます。

トークンとスロット一覧の例

バックアップ

すべてのトークンとそのオブジェクトは softhsm2.conf に指定されたディレクトリにファイル形式で格納されます。したがって、通常のファイルコピーでバックアップ可能です。ただし復元時は同一のソフトウェアバージョンや互換性に注意してください。

推奨バックアップ手順(簡易):

  1. トークン停止やアプリケーションの切断を行う。
  2. 保存ディレクトリを安全な場所にコピーする(暗号化ストレージ推奨)。
  3. 定期的に整合性チェックを行う。

注意: バックアップファイルそのものが秘密鍵情報を含むため、アクセス権と保管場所には厳重な管理を行ってください。

OpenSC ユーティリティでの動作確認

OpenSC の PKCS#11 ユーティリティを使って SoftHSM をテストします。インストール例:

sudo apt-get install opensc

OpenSC のインストール例

モジュールを指定して PKCS#11 のテストを実行:

pkcs11-tool --module /usr/local/lib/softhsm/libsofthsm2.so -l -t

-t スイッチはメカニズムのテストを行います。成功すればトークンへのログインと基本的な暗号操作が検証されたことになります。

pkcs11-tool によるテスト出力例

トラブルシューティング(よくある問題と対処)

  • configure がライブラリを見つけられない: libssl-dev や sqlite3-dev など開発用ヘッダを導入する。–with-openssl や –with-sqlite3 オプションでパスを明示。
  • トークンにアクセスできない: SO/USER PIN の入力ミスや権限不足。ファイルパーミッションとライブラリパス(LD_LIBRARY_PATH)を確認。
  • バージョン互換性: ソースをビルドした環境と運用環境のライブラリバージョン差に注意する。

代替アプローチといつ向かないか

  • 本番で高い耐タンパ性や物理的保護が必要な場合は、SoftHSM は適していません。ハードウェア HSM(FIPS/PCI 対応製品)を選択してください。
  • テスト・CI 環境やローカル開発、学習用途には SoftHSM が便利です。
  • 秘密分散や HSM の冗長化、物理的保管要件がある場合は商用 HSM を用いた設計が必要です。

セキュリティ強化のチェックリスト(役割別)

運用担当者:

  • 保存ディレクトリのファイル権限を最小化する。
  • 定期バックアップと復元テストを実施する。
  • SO PIN の管理ポリシーを文書化する。

アプリケーション開発者:

  • PKCS#11 モジュールパスを設定ファイルで外部化する。
  • トークンアクセスのログとエラーハンドリングを実装する。

セキュリティ管理者:

  • バックアップを暗号化し、鍵管理ポリシーに従う。
  • SoftHSM 利用を許可する環境を限定する(ネットワーク、ユーザ)。

移行と互換性のヒント

  • SoftHSM v1 から v2 への移行ツール(–with-migrate オプション)を使う場合、SQLite3 が必要です。
  • バックアップファイルを別ホストにコピーして復元する場合、同じ SoftHSM バージョンで動作確認を行ってください。

短い運用手順(SOP)

  1. コードビルド: ./configure; make; sudo make install
  2. 設定: SOFTHSM2_CONF を必要なら設定
  3. 初期化: softhsm2-util –init-token –slot 0 –label ‘Token-1’
  4. テスト: pkcs11-tool –module /usr/local/lib/softhsm/libsofthsm2.so -l -t
  5. バックアップ: 保存ディレクトリを暗号化して保管
  6. モニタリング: アクセスログと鍵利用ログを定期確認

決定フロー(どの環境で SoftHSM を使うか)

flowchart TD
  A[テスト/開発環境?] -->|Yes| B[SoftHSM を使用]
  A -->|No| C[本番環境]
  C --> D[物理保護・規格が必要?]
  D -->|Yes| E[商用ハードウェア HSM を選択]
  D -->|No| B

参考となるベストプラクティス(簡潔)

  • 本番での鍵はハードウェア HSM に保管する。SoftHSM はあくまでソフトウェア代替。
  • トークンのラベル・シリアルで管理し、ID 管理を一元化する。
  • バックアップは暗号化し、アクセスは最小権限で運用する。

1行用語集

PKCS#11: 暗号デバイスとアプリケーションを接続する標準 API。

まとめ

  • SoftHSM は PKCS#11 準拠のソフトウェア HSM 実装で、テストや開発で便利です。
  • Ubuntu 上でのビルド手順は依存解決、configure、make、make install の順です。
  • 初期化は softhsm2-util、動作確認は OpenSC の pkcs11-tool が有用です。
  • 本番ではハードウェア HSM の採用、トークンのバックアップと厳格なアクセス管理を検討してください。

重要: SoftHSM のバックアップファイルは秘密鍵を含むため、保管・移送時の暗号化とアクセス制御を必ず実施してください。

共有する: X/Twitter Facebook LinkedIn Telegram
著者
編集

類似の素材

Debian 11 に Podman をインストールして使う
コンテナ

Debian 11 に Podman をインストールして使う

Apt-pinning入門:Debianで複数リポジトリを管理
Linux

Apt-pinning入門:Debianで複数リポジトリを管理

OptiScalerでFSR 4を全対応ゲームに導入する方法
ゲーム

OptiScalerでFSR 4を全対応ゲームに導入する方法

Dansguardian と Squid(NTLM)を Debian Etch に導入する方法
ネットワーク

Dansguardian と Squid(NTLM)を Debian Etch に導入する方法

AndroidでSDカードのインストールエラーを修正する方法
トラブルシューティング

AndroidでSDカードのインストールエラーを修正する方法

KNetAttach と KDE の remote:/ でネットワークフォルダーを設定
Linux ネットワーク

KNetAttach と KDE の remote:/ でネットワークフォルダーを設定