クライアント デバイス証明書の認証機能を使用すると、Horizon Client for Linux にクライアント システムの証明書認証を設定できます。Unified Access Gateway はクライアント システムを認証します。SoftHSM2 ライブラリは、クライアント システムに対する証明書の配布と展開を管理します。デバイスの認証に成功した後も、ユーザーはユーザー認証を行う必要があります。
前提条件
この機能には次の要件があります。
- Unified Access Gateway2.6 以降
- Horizon 7 バージョン 7.5 以降
- クライアント システムに、Unified Access Gateway が受け入れるルート認証局 (CA) 証明書がインストールされている。
Unified Access Gateway の構成の詳細については、Unified Access Gateway ドキュメントを参照してください。
Linux クライアント システムでのデバイス証明書認証の設定
デバイス証明書認証を設定するには、次の操作を行う必要があります。
- システムに SoftHSM2 ライブラリをインストールします。
- SoftHSM2 ライブラリの暗号化トークンを作成します。
- デバイス証明書、パブリックキー キー、プライベート キーを準備します。
- SoftHSM2 データベースに証明書とキー ファイルをインポートします。
- Horizon Client で使用されるように SoftHSM2 ライブラリを構成します。
以下では、一般的な Linux クライアント システムで設定を完了するためのガイドラインについて説明します。具体的な手順は、Linux ディストリビューションによって異なる場合があります。
- 次のいずれかの方法で、SoftHSM2 ライブラリを Linux クライアント システムにインストールします。
- 方法 1:パッケージ管理ツールを使用する。
たとえば、Ubuntu システムの場合は、次のコマンドを実行します。
sudo apt-get install softhsm2
- 方法 2:SoftHSM2 ライブラリを手動でコンパイルしてインストールする。
- システムに SoftHSM2 ソース コード リポジトリのクローンを作成します。
git clone https://github.com/opendnssec/SoftHSMv2.git
- 作成したソース コードのクローンから SoftHSM2 ライブラリをコンパイルして構成し、インストールします。
注: Horizon Client は独自の OpenSSL ライブラリをインストールしますが、SoftHSM2 にリンクしている OpenSSL ライブラリも使用します。ランタイムの競合を回避するため、Horizon Client によってインストールされた OpenSSL ライブラリに SoftHSM2 をリンクしてください。
次のコマンドの例で、<path to OpenSSL library> には include パスと lib パスが含まれている必要があります。
cd SoftHSMv2/ sh autogen.sh ./configure --with-crypto-backend=openssl --with-openssl=<path to OpenSSL library> make sudo make install
- システムに SoftHSM2 ソース コード リポジトリのクローンを作成します。
- 方法 1:パッケージ管理ツールを使用する。
- SoftHSM2 ライブラリの暗号化トークンを作成します。
デフォルトでは、SoftHSM2 には 1 つのトークン スロットがあります。最初のスロットでトークンを初期化すると、2 番目のスロットが自動的に追加されます。各スロットで新しいトークンを初期化すると、以降のスロットが追加されます。
- コマンドを実行してトークンを作成します。
softhsm2-util --init-token --slot 0 --label "<your token label>"
- トークン作成コマンドから返されたスロット ID をメモしておきます。このスロット ID は、x.509 デバイス証明書とキー ファイルを SoftHSM2 データベースにインポートするときに必要になります。
- コマンドを実行してトークンを作成します。
- X.509 デバイス証明書、パブリックキー キー、プライベート キーを準備します。
- プライベート キーを含む PFX 形式のデバイス証明書を取得します。
- PFX ファイルを PEM 形式のキー ファイルに変換します。たとえば、次のコマンドを実行すると client.pfx が client-keys.pem に変換されます。
openssl pkcs12 -in client.pfx -nocerts -nodes -out client-keys.pem
- PEM キー ファイルを PKCS8 キー ファイルに変換します。
openssl pkcs8 -in client-keys.pem -topk8 -nocrypt -out client-keys.pk8
- PFX ファイルを DER 形式の X.509 証明書に変換します。
openssl pkcs12 -in client.pfx -nokeys -nodes -out client-cert.pem openssl x509 -outform der -in client-cert.pem -out client-cert.der
- SoftHSM2 証明書データベースに X.509 証明書とキー ファイルをインポートします。
- SoftHSM2 データベースにキー ファイルをインポートします。
たとえば、次のコマンドを実行すると、client-key.pk8 ファイルがインポートされます。<your token label> と <slot ID> は、手順 2 で取得した値に置き換えます。
softhsm2-util --import client-key.pk8 --token "<your token label>" --slot <slot ID> --label "client" --id 0001
- SoftHSM2 データベースに X.509 証明書をインポートします。
たとえば、次のコマンドを実行すると、client-cert.der ファイルがインポートされます。<softhsm2-pin> は、SoftHSM2 データベースにアクセスする際に必要な PIN で置き換えます。
pkcs11-tool --module /usr/local/lib/softhsm/libsofthsm2.so -l -p <softhsm2-pin> --write-object client-cert.der --type cert --id 0001
- X.509 証明書、パブリック キー、プライベート キーがすべて SoftHSM2 データベースに格納されていることを確認します。
pkcs11-tool --module /usr/local/lib/softhsm/libsofthsm2.so -l -p <softhsm2-pin> --token-label "<your token label>" --list-objects
- SoftHSM2 データベースにキー ファイルをインポートします。
- Horizon Client で使用されるように SoftHSM2 ライブラリを構成します。
sudo mkdir /usr/lib/vmware/view/pkcs11 sudo ln -s /usr/local/lib/softhsm/libsofthsm2.so /usr/lib/vmware/view/pkcs11/libsofhsm2.so
FIPS コンプライアンス モードのサポート
FIPS (Federal Information Processing Standard) に準拠している環境でデバイス証明書認証を使用するには、まず、FIPS 互換モードの有効化に記載されている手順を完了する必要があります。次に、前のLinux クライアント システムでのデバイス証明書認証の設定で説明した設定手順を行い、次の変更を行います。
cd SoftHSMv2/ sh autogen.sh ./configure --with-crypto-backend=openssl --with-openssl=<path to OpenSSL library> --enable-fips make sudo make install