# Gemalto HSMとの統合

## Gemalto HSMとの統合

![](/files/MoqfnULnV352kICUyLu3)

## Keeper SSOコネクトHSMの概要

SSOコネクトの`data`フォルダ内には、ファイルがいくつかあります。このうちの2つのファイルには、サーバーで生成された、保護する必要のある秘密鍵が含まれ、エンドユーザーの自動生成されたマスターパスワードの暗号化と復号化に利用されます。また、暗号化されたデータのローカルキャッシュを含む`.sql`ファイルもあります。重要なのは、このデータフォルダへのアクセスを制限することです。

Windows以外のマシンの場合、`data`フォルダはSSOコネクトのインストールフォルダ (通常は、`$HOME/sso_connect/data`) の下にあります。

Windowsマシンの場合、バージョン14.1以降、`data`フォルダは、`C:\ProgramData\Keeper SSO Connect\data\`にあります。バージョン14.1より前は、`C:\Program Files\Keeper Security\SSO Connect\data\`にありました。

以下に説明するように、HSM (ハードウェアセキュリティモジュール) を利用することで、セキュリティをもう1層追加できます。HSMが使用可能な場合、SSOコネクトのインスタンスごとに暗号鍵が生成され、HSMに安全に保存されます。暗号鍵は、`data/`フォルダ内の重要なプロパティファイルの暗号化に使用されます。

## Gemalto Luna HSMの手順

### HSMの要件

1. Gemalto HSMは、Lunaファームウェア6.2以降を実行している必要があります。

### ネットワーク要件

* TCP/443ポートの開放、Keeper SSOコネクトからwww\.keepersecurity.comへのステートフルな発信
* TCP/22ポートの開放、HSM管理端末からHSMシステムへのステートフルな発信
* TCP/22ポートの開放、CLI 設定用のKeeper SSOコネクトサーバーへの着信
* TCP/1792ポートの開放、HSMシステムとの双方向通信
* TCP/8080ポートの開放、管理者GUIにアクセスするためのKeeper管理者ワークステーションからKeeper SSOコネクトへの着信 (オプション)

### ネットワークアクセスをテスト

```
$ telnet www.keepersecurity.com 443
Trying 52.204.60.27
Connected to www.keepersecurity.com.
Escape character is '^]'.

$ telnet push.services.keepersecurity.com 443
Trying 52.44.0.141...
Connected to push.services.keepersecurity.com.
Escape character is '^]'.

$ ssh <HSMのIPアドレス（ip address of the HSM）>
password: <管理者パスワード（admin-password）>
```

### Linux固有の要件

CentOS 6または7を推奨しますが、以下の操作を追加すれば、Ubuntuでも実行できます。

```
UBUNTUのみ:
$ sudo apt-get install zip unzip # used by the Luna installer
$ sudo apt-get install alien # used by the Luna installer to convert .rpm files
$ sudo apt-get install gcc-multilib # Because some Luna programs are 32-bit
```

`/lib/ld-linux.so.2`が存在する場合は、次のセクションに進みます。

```
/lib/ld-linux.so.2が存在しない場合:
    /usr/lib/ld-linux.so.2が存在する場合:
        $ sudo ln -s /usr/lib/ld-linux.so.2 /lib/ld-linux.so.2
    /lib32/ld-linux.so.2が存在する場合:
        $ sudo ln -s /lib32/ld-linux.so.2 /lib/ld-linux.so.2
    それ以外の場合（Ubuntu）:
        $ sudo yum install gcc-multilib    # use yum or apt-get

Red Hat（CentOS）をご使用の場合は、次の操作を実行します。
    $ sudo yum install glibc-devel.i686
```

### Lunaクライアントをインストール

Keeper SSOコネクトでLuna HSMを使用するには、Lunaクライアントをインストールして、正しく設定する必要があります。

* LunaクライアントソフトウェアをSSOコネクトサーバーにコピーします。 通常、ファイルの名前は、`LunaClient_7.3.0-165_Linux.tar.gz`のようになっています。
* SSOコネクトサーバーにログインします。
* Lunaクライアントのインストーラーを実行します。

```
$ tar xzf LunaClient_7.3.0-165.Linux.tar.gz
$ cd LunaClient_7.3.0-165_Linux/64
$ sudo sh install.sh
-Luna Network HSMを選択
- (N)extを選択
- Luna JSP (Java)を選択
- (I)nstallを選択

$ sudo gpasswd --add <ユーザー名（username）> hsmusers
- 'groups'と入力して、所属するグループを確認します。
- 新しいグループを識別するために、シェルを新たに作成してください。

「~/.bash_profile」ファイルにエイリアスを追加しておくと便利でしょう。
alias luna='sudo /usr/safenet/lunaclient/bin/lunacm'
```

* `$JAVA_HOME/jre/lib/security/java.security`を編集します。

  a. セキュリティプロバイダの一覧を見つけます。

  b. `security.provider.10=com.safenetinc.luna.provider.LunaProvider`を追加します。

  c.ファイルを保存します。

### Lunaへのアクセスを設定

#### 要件

1. HSMマシンのIPアドレスまたはホスト名。
2. 管理者パスワード (別名、セキュリティ責任者のパスワード）。
3. 現在使用中のマシンのIPアドレスやユーザーの名前などの一意の文字列。
4. パーティションのクリプトオフィサーのパスワード。
5. 鍵を保管するパーティション名 (これは設定済みのはずです）。

   > パーティションをまだ設定していない場合は、'lunash'プログラムを使用し、管理者としてログインしてパーティションを作成してください。Gemalto Lunaのドキュメントをご参照ください。

#### HSMの設定を確認

1. Lunaクライアントを起動します。

```
$ luna
lunacm (64-bit) v7.3.0-165.Copyright (c) 2018 SafeNet.All rights reserved.

lunacm:> clientconfig deploy -n <HSMのIPアドレス（hsm-ip-address）> -c <一意の文字列（unique-string）> -par <パーティション名（partition-name）> -ur admin -pw <HSMの管理者パスワード（hsm-admin-password）> -v

... make sure it finishes successfully


Available HSMs:

Slot Id -> 0 
Label -> [ご利用のパーティション名]
Serial Number -> 12345678987654321
Model -> LunaSA 7.3.0 
Firmware Version -> 7.3.0 
Configuration -> Luna User Partition With SO (PW) Key Export With Cloning Mode
Slot Description -> Net Token Slot


Current Slot Id:0


lunacm:>role login -n co
enter password: クリプトオフィサーのパスワード

Command Result :No Error

lunacm:>par con # パーティションの内容を表示
lunacm:>exit
```

### HSMにアクセスするためにKeeper SSOコネクトを設定

通常のSSOコネクト設定の質問に加えて、以下に示すようなHSM固有の質問がいくつかあります。

```
$ java -jar SSOConnect.jar -config

... 通常のSSO Connect設定の質問...

Configure Secure Key Storage (y/N): y
IMPORTANT:Make sure that this server is already connected to a networked HSM or other secure key storage device.
Type of Secure Key Storage (Gemalto SafeNet Luna HSM): <return>
Secure storage device access parameters (slot,password): <return>
  slot:0
  password: クリプトオフィサーのパスワード
A certificate chain is required in order to store an encryption key.
You may use the SSL certificate file entered previously, or use a different one.
Certificate chain file (/home/ubuntu/keeperSSO/data/sso_keystore.jks): <return>
Certificate chain file password (none): <return>
1 certificates found
Enable Secure Key Storage (Y/n): y
```

### トラブルシューティング

#### 設定のトラブルシューティング

1. サーバーが適正であることを確認します。CentOS 6または7を推奨します。現時点ではWindowsはサポートしていません。

   ```
   $ rpm -q centos-release
   centos-release-7-6.1810.2.el7.centos.x86_64

   $ cat /etc/centos-release
   CentOS Linux release 7.6.1810 (Core)
   ```
2. Lunaクライアントがサーバーに正しくインストールされていることを確認します。Lunaクライアントを実行して、クリプトオフィサーとしてログインし、正常にログインしてパーティションの内容を表示できることを確認します。

   ```
   $ sudo /usr/safenet/lunaclient/bin/lunacm

   luna> role login -n co
   （パスワードを入力）
   luna> par con
   このHSMを過去にKeeperで使用したことがある場合は、Keeper SSO Properties 514320201573のような名前の既存の鍵があるはずです。
   ```
3. Java 1.8またはJava 11が利用可能であることを確認します。

   ```
   $ java -version
   java version "1.8.0_201"
   Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
   Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
   ```
4. Lunaライブラリが利用可能であることを確認します。

   ```
   $ ls sso_connect/*Luna*
   libLunaAPI.so   LunaProvider.jar
   ```
5. 正しいポートが解放されていることを確認します。ファイアウォールは、ポート22および1792で発着信両方の接続を許可する必要があります。

   ```
   ファイアウォールがローカルの場合は、以下のコマンドラインを使用します。
   $ iptables -xvn -L
   ```
6. ユーザーがhsmusersグループのメンバーであることを確認します。

   ```
   $ whoami
   centos

   $ groups
   centos adm wheel systemd-journal hsmusers

   **Lunaソフトウェアでは、Lunaライブラリにアクセスするユーザーがhsmusersグループのメンバーであることが必要です。
   $ sudo gpasswd --add centos hsmusers
   このコマンドが正しく動作したことを確認するには、新しいシェルを開く必要があります。
   ```
7. SSOconnectがマシンにインストールされていることを確認します。
   * 通常、`sso_connect`、`KeeperSSO`、またはそれに類似した名前のフォルダがあります。フォルダには多数のjarファイルが含まれます。
8. `data`フォルダに不完全な設定がないことを確認します。
   * 以前KeeperSSOを設定しようとして失敗した場合は、

     `KeeperSSO/data`フォルダを削除してもう一度やり直すのが安全です。
9. アプリが`data/`フォルダに対する読み取り/書き込み権限を持っていることを確認します。

   ```
   $ ls -ld data
   drwxrwxr-x 2 centos centos  181 Feb  4 19:42 data
   ```

#### 動作のトラブルシューティング

1. ログファイルにエラーがないか確認します。SSOconnectのセキュアキーストレージサブシステムは、問題が発生すると、ログにERROR行を出力します。

   ```
   $ more logs/ssoconnect.log
   ```
2. エラーは、「セキュアキーストレージが使用できません (Unable to use Secure Key Storage）」といったパターンになります。これは、以下のいずれかの問題を示しています。

   ```
     a.Network problem accessing the HSM
        -「設定のトラブルシューティング」の手順2を実行して、HSMへのアクセスをご確認ください。

     b.data/sks.properties is missing
        -data/sks.propertiesがない場合は、SSOConnectを再設定する必要があります。

     c.The encrypted property files are missing
        -data/instance.encpとdata/shared.encpの有無を確認します。

     d.The encryption key is missing from the HSM
        -HSMパーティションが消去された可能性があります。 SSOConnectを再設定する必要があります。

     e.The server may be out of disk space
        -ディスク領域を一部消去します。

     f.The encryption algorithm used is not supported on the HSM
        -アルゴリズムは、AES/GCM/NoPaddingです。 デバイスの販売業者にお問い合わせください。

     g.The file data/sso-keystore.jks is missing
        -このプログラムは、sso_keystore.jksファイルからの証明書チェーンがないと、HSMに鍵を保管できません。
          ファイルを検索し、データフォルダにあることをご確認ください。
   ```

## バックアップ

`data`フォルダにはSSOコネクト設定ファイルが含まれています。少なくとも、最初の設定の後、および設定を変更するたびにバックアップする必要があります。設定ファイル以外にも、`data`にはデータファイルがありますが、こちらは、Keeperサーバーとの同期が外れると自動的に更新されます。そのため、通常の定期バックアップを利用してもよいですが、必須ではありません。すべてのコンフィグレーション設定がインスタンス間で共有されているわけではないため、各SSOコネクトインスタンスの`data`フォルダを個別にバックアップする必要があります。

Windows以外のマシンの場合、`data`フォルダはSSOコネクトのインストールフォルダ (通常は、`$HOME/sso_connect/data`) の下にあります。

Windowsマシンの場合、バージョン14.1以降、`data`フォルダは、`C:\ProgramData\Keeper SSO Connect\data\`にあります。バージョン14.1より前は、`C:\Program Files\Keeper Security\SSO Connect\data\`にありました。

## 回復

### サーバーの障害

SSOコネクトサーバーが停止した場合は、上記の標準的なインストール手順に従って、代替マシンにLunaとSSOコネクトを再インストールする必要があります。

上記のとおり、`data`フォルダをバックアップした場合は、データフォルダを復元してから、SSOコネクトを起動してください。(SSOコネクトを起動したため) `data`フォルダがすでに存在する場合は、SSOコネクトを停止し、データフォルダ内のファイルをすべて削除し、バックアップしたデータフォルダからファイルをコピーして、SSOコネクトを再起動します。SSOコネクトが正常に起動するはずです。

`data`フォルダをバックアップしていなかった場合、またはバックアップが古い場合は、代替インスタンスを新規でインストールするように設定する必要があります。SSOコネクトのインストールガイドに従ってください。

### HSMの障害

HSMを使用する場合、HSMは設定ファイルの復号化に使用した暗号鍵を`data`フォルダに保存します。HSMへのアクセスは、SSOコネクトの起動時に1度、設定が変更されるときにも随時行われます。設定ファイルが暗号化されており、HSMに保存した暗号鍵が失われたか、またはアクセスできない場合は、暗号化されていない設定ファイルを新規作成するために、SSOコネクトインスタンスを再度設定する必要があります。`data`フォルダの内容を削除し、SSOコネクトをもう一度最初から設定します。

HSM/SKSの使用を無効にするには、「SKSを有効にしますか?  (Enable SKS?）」という設定の質問に「いいえ（no）」を入力するか、または`-disableSKS`コマンドラインオプションを使用します。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.keeper.io/jp/sso-connect-on-prem/integration-with-gemalto-hsm.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
