> For the complete documentation index, see [llms.txt](https://docs.keeper.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.keeper.io/keeperpam/jp/commander-cli/commander-installation-setup/configuration/ssl-tls-and-custom-ca-certificates.md).

# SSL/TLSとカスタムCA証明書

Keeperコマンダーは、KeeperクラウドAPIとHTTPSで通信します。デフォルトでは、信頼済みCAバンドル (同梱のcertifiストア、または構成時のOS CAストア) を使ってサーバー証明書を検証します。

ネットワークで企業ルートCAによるTLS検査 (SSLインターセプト) が行われている場合、そのCAを信頼するよう構成しないと、証明書検証エラーで接続に失敗することがあります。

このページでは、コマンダーCLIおよびサービスモードでのSSL/TLS証明書検証の構成方法を取り扱います。

***

### カスタムCAバンドルを使用する場合 <a href="#when-to-use-a-custom-ca-bundle" id="when-to-use-a-custom-ca-bundle"></a>

以下のようなエラーが表示される場合は、カスタムCAバンドルを構成します。

{% code overflow="wrap" %}

```
requests.exceptions.SSLError: HTTPSConnectionPool(host='keepersecurity.com', port=443): Max retries exceeded with url: /api/rest/authentication/get_device_token (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)')))
```

{% endcode %}

または

```
certificate verify failed: self-signed certificate in certificate chain
```

よくあるシナリオは以下のとおりです。

| シナリオ                           | 推奨アプローチ                                                  |
| ------------------------------ | -------------------------------------------------------- |
| 企業のTLS検査 (Zscaler、Palo Altoなど) | Keeperエンドポイントを検査対象外 (許可リスト) にするか、企業ルートCAを含むCAバンドルを指定する   |
| OSのCAストアが未整備または古い              | `KEEPER_SSL_CERT_FILE=system` を設定するか、OSのCAパッケージをインストールする |
| システム証明書なしでコマンダーをインストールした場合     | `KEEPER_SSL_CERT_FILE` にPEMファイルのパスまたは `certifi` を設定する    |
| デバッグ用プロキシを使うローカル開発             | プロキシCAを含むPEMファイルを使うか、テスト専用として `none` を使う                 |

セキュリティポリシーで許可される場合は、ITチームと連携し、KeeperエンドポイントをTLS検査の許可リストに追加してください (`keepersecurity.com`、`keepersecurity.eu`、`keepersecurity.com.au`、`keepersecurity.ca`、`keepersecurity.jp`、または必要に応じて `govcloud.keepersecurity.us`)。これらのホストへの外向きHTTPSを許可リストに追加すれば、カスタムCAバンドルが不要になる場合があります。

***

### クイックスタート <a href="#quick-start" id="quick-start"></a>

#### 手順1: 企業ルートCAを入手する <a href="#step-1-obtain-the-corporate-root-ca" id="step-1-obtain-the-corporate-root-ca"></a>

TLS検査に使用されているルートCA証明書を、ITまたはセキュリティチームから入手してください。通常は `.pem` または `.crt` ファイルです。

#### 手順2: CAバンドルを作成する <a href="#step-2-create-a-ca-bundle" id="step-2-create-a-ca-bundle"></a>

公開ルートCAと企業ルートCAを連結した、単一のPEMファイルを作成します。

macOS / Linuxの例:

```bash
cat "$(python3 -m certifi)" /path/to/corporate-root-ca.pem > /etc/ssl/certs/keeper-cacert.pem
```

Windowsでは、certifiバンドルと企業CAを1つの `.pem` ファイルに連結します。`C:\ProgramData\Keeper\keeper-cacert.pem` など、変更しにくい場所に保存してください。

{% hint style="info" icon="pencil-line" %}
コマンダーのインストールディレクトリ内にある同梱の `cacert.pem` は編集しないでください。アップグレード時に上書きされます。独自のバンドルを参照するには `KEEPER_SSL_CERT_FILE` を使用してください。
{% endhint %}

#### 手順3: 環境変数を設定する <a href="#step-3-set-the-environment-variable" id="step-3-set-the-environment-variable"></a>

Windows (永続):

```
setx KEEPER_SSL_CERT_FILE "C:\ProgramData\Keeper\keeper-cacert.pem"
```

`setx` 実行後は、新しいコマンドプロンプトまたはPowerShellウィンドウを開いてください。

macOS / Linux (`~/.zshrc`、`~/.bashrc`、またはサービスユニットファイルに追加):

```bash
export KEEPER_SSL_CERT_FILE="/etc/ssl/certs/keeper-cacert.pem"
```

#### 手順4: 構成を確認する <a href="#step-4-verify-the-configuration" id="step-4-verify-the-configuration"></a>

新しいターミナルを開き、変数が設定されていることを確認します。

```bash
echo $KEEPER_SSL_CERT_FILE        # macOS / Linux
echo %KEEPER_SSL_CERT_FILE%       # Windows CMD
```

コマンダーを起動してログインします。

```bash
keeper shell
login user@company.com
```

`CERTIFICATE_VERIFY_FAILED` エラーなしでログインが完了するはずです。詳細なログを有効にするには、`keeper shell --debug` を使用します。

***

### 構成リファレンス <a href="#configuration-reference" id="configuration-reference"></a>

#### 解決の優先順位 <a href="#resolution-order" id="resolution-order"></a>

SSL検証の設定は、以下の順序で解決されます。最初に一致したルールが適用されます。

<table><thead><tr><th width="86.31640625" align="right">順序</th><th width="209.44921875">設定</th><th>効果</th></tr></thead><tbody><tr><td align="right">1</td><td><code>VERIFY_SSL=FALSE</code> 環境変数</td><td>この変数を参照する設定 (PAMトンネルのWebSocket接続を含む) でSSL検証を無効化</td></tr><tr><td align="right">2</td><td><code>config.json</code> 内の <code>"certificate_check": false</code></td><td>その構成ファイルを使うREST/API呼び出しのHTTP証明書検証を無効化</td></tr><tr><td align="right">3</td><td><code>KEEPER_SSL_CERT_FILE</code> 環境変数</td><td>HTTP通信に使うCAバンドルを指定</td></tr><tr><td align="right">4</td><td>デフォルト</td><td>certifi同梱ストアを使用。または <code>KEEPER_SSL_CERT_FILE=system</code> の場合はOSのCAバンドルを使用</td></tr></tbody></table>

#### `KEEPER_SSL_CERT_FILE` の値 <a href="#keeper_ssl_cert_file-values" id="keeper_ssl_cert_file-values"></a>

<table><thead><tr><th width="252.98046875">値</th><th>動作</th></tr></thead><tbody><tr><td><em>(未設定)</em></td><td>certifi同梱のCAストアを使用 (デフォルト)</td></tr><tr><td><code>.pem</code> ファイルへの絶対パス</td><td>指定したPEMファイルを使用。ファイルが存在しない場合は警告を出力し、certifiにフォールバック</td></tr><tr><td><code>certifi</code></td><td>同梱のcertifi CAストアを使用</td></tr><tr><td><code>system</code></td><td>OSのCAバンドルを使用 (macOSおよびLinux)。Windowsではcertifiにフォールバック</td></tr><tr><td><code>none</code> または <code>false</code></td><td>HTTP証明書検証を無効化。本番環境では非推奨</td></tr></tbody></table>

`KEEPER_SSL_CERT_FILE` はプロセスごとに1回読み取られます。この変数を変更したら、コマンダーを再起動してください。

#### `config.json` オプション <a href="#config.json-option" id="config.json-option"></a>

構成ファイル (`--config` または `--config-file`) を使う場合、HTTP SSL検証は `certificate_check` プロパティで制御します。

```json
{
    "user": "services@company.com",
    "server": "keepersecurity.com",
    "certificate_check": true
}
```

| 値       | 効果                                                              |
| ------- | --------------------------------------------------------------- |
| `true`  | HTTP SSL検証を有効化 (デフォルト)。`KEEPER_SSL_CERT_FILE` またはデフォルトのCAストアを使用 |
| `false` | その構成ファイルについてHTTP SSL検証を無効化                                      |

その他の構成オプションについて詳しくは、[構成ファイル](/keeperpam/jp/commander-cli/commander-installation-setup/configuration/configuration.md)をご参照ください。

#### `VERIFY_SSL` 環境変数 <a href="#verify_ssl-environment-variable" id="verify_ssl-environment-variable"></a>

`VERIFY_SSL=FALSE` は互換性のために残されているレガシー設定です。この変数を参照するコンポーネント (PAMトンネルのWebSocket接続を含む) では、SSL検証が無効になります。

HTTP通信では、検証を無効にするのではなく、適切なCAバンドルを指定した `KEEPER_SSL_CERT_FILE` を使用してください。

***

### これらの設定が対象とするトラフィック <a href="#traffic-covered-by-these-settings" id="traffic-covered-by-these-settings"></a>

#### HTTP/HTTPSトラフィック <a href="#http-https-traffic" id="http-https-traffic"></a>

以下のコマンダー操作には、`KEEPER_SSL_CERT_FILE`、`certificate_check`、および上記の解決優先順位が適用されます。

* ログインおよび認証
* ボルト同期およびREST API呼び出し
* レコードの添付ファイル
* エンタープライズおよびコンプライアンスレポート
* KeeperPAMクラウドAPI操作 (検出、GraphSync、ローテーション、PAM SaaSプラグインのダウンロード、ルーターHTTP呼び出し)
* コマンダーのHTTPを使うサードパーティインポート (例: LastPassインポート)
* KeeperクラウドAPIへのサービスモードREST APIの外向き呼び出し

#### PAMトンネルのWebSocket接続 <a href="#pam-tunnel-websocket-connections" id="pam-tunnel-websocket-connections"></a>

PAMトンネルのWebSocket接続 (SSH/RDPトンネルのシグナリング) には `VERIFY_SSL` 環境変数を使います。`KEEPER_SSL_CERT_FILE` は使いません。

| 症状                                         | 想定される原因                                                              |
| ------------------------------------------ | -------------------------------------------------------------------- |
| ログインとボルト同期は成功するが、`pam tunnel` がSSLエラーで失敗する | WebSocket通信向けに `VERIFY_SSL` を構成する。またはトンネルエンドポイントへのアクセスについてITチームに相談する |
| 証明書エラーでログインに失敗する                           | HTTP通信向けに `KEEPER_SSL_CERT_FILE` を構成する                               |

トンネルセットアップ時のHTTP手順 (例: バインドURLのリクエスト) にはHTTP SSL設定が適用され、`KEEPER_SSL_CERT_FILE` も対象になります。

***

### HTTPプロキシとTLS検査 <a href="#http-proxy-and-tls-inspection" id="http-proxy-and-tls-inspection"></a>

HTTPプロキシ構成とTLS検査は別々の設定です。

| 対象              | 構成                                                       |
| --------------- | -------------------------------------------------------- |
| HTTPプロキシのルーティング | `proxy` コマンド、`config.json` の `"proxy"`、または `--proxy` フラグ |
| TLS検査の信頼        | `KEEPER_SSL_CERT_FILE`                                   |

制限されたネットワークでは、両方の設定が必要になる場合があります。[プロキシでのログイン](/keeperpam/jp/commander-cli/commander-installation-setup/logging-in.md#logging-in-with-a-proxy)をご参照ください。

***

### プラットフォーム固有の注意 <a href="#platform-notes" id="platform-notes"></a>

#### Windows <a href="#windows" id="windows"></a>

* 永続的な環境変数には `setx` を使用してください。スケジュールされたタスクおよびWindowsサービスは、対話型シェルで設定した変数を継承しません。
* Windowsタスクスケジューラでは、タスクの環境またはシステム環境変数として `KEEPER_SSL_CERT_FILE` を設定してください。
* PEMファイルは、コマンダーを実行するアカウントが読み取れる場所に保存してください。

#### macOS <a href="#macos" id="macos"></a>

* `KEEPER_SSL_CERT_FILE=system` を使う場合、一般的なHomebrewおよびシステムのCAパスが確認されます。
* シェルプロファイルを更新したら、新しいターミナルを開いてください。

#### Linux <a href="#linux" id="linux"></a>

* `KEEPER_SSL_CERT_FILE=system` を使う場合は、`ca-certificates` パッケージをインストールしてください。
* 一般的なシステムバンドルのパスには、`/etc/ssl/certs/ca-certificates.crt` および `/etc/pki/tls/certs/ca-bundle.crt` などがあります。

***

### バッチ実行とスケジュール実行 <a href="#batch-and-scheduled-execution" id="batch-and-scheduled-execution"></a>

バッチモードまたはスケジュールされたタスクからコマンダーを実行する場合は、起動前に環境で `KEEPER_SSL_CERT_FILE` を設定してください。スケジュールされたタスクおよびWindowsサービスは、対話型シェルセッションの変数を継承しません。

例:

```bash
keeper --config=my_config.json --batch-mode commands.cmd
```

このコマンドを実行するのと同じ環境で、`KEEPER_SSL_CERT_FILE` が設定されていることを確認してください。タスクスケジューラのセットアップについて詳しくは、[Windowsタスクによる自動化](/keeperpam/jp/commander-cli/commander-installation-setup/configuration/automating-with-windows-task.md)をご参照ください。

***

### サービスモード <a href="#service-mode" id="service-mode"></a>

コマンダーサービスモードは、コマンダーREST APIをサービスとして実行します。KeeperクラウドAPIへの外向き呼び出しには、`KEEPER_SSL_CERT_FILE` を含むCLIと同じHTTP SSL設定が使われます。

ホストまたはVPCからの外向き通信がTLS検査を経由する場合は、コンテナまたはインスタンスの起動前に、サービスモードの実行環境でCAバンドルを構成してください。

#### Docker <a href="#docker" id="docker"></a>

CAバンドルをコンテナにマウントし、`docker-compose.yml` の `environment` セクションで `KEEPER_SSL_CERT_FILE` を設定します。

```yaml
services:
  commander:
    container_name: keeper-service
    image: keeper/commander:latest
    environment:
      KSM_CONFIG: <base64-encoded-ksm-config>
      COMMANDER_RECORD: <config-record-uid>
      KEEPER_SSL_CERT_FILE: /certs/keeper-cacert.pem
    volumes:
      - /host/path/keeper-cacert.pem:/certs/keeper-cacert.pem:ro
    ports:
      - "8900:8900"
    command: service-create -p 8900 -c 'tree,ls' -f json -q y -ur $COMMANDER_RECORD \
      --ksm-config $KSM_CONFIG --record $COMMANDER_RECORD
    restart: unless-stopped
```

`/host/path/keeper-cacert.pem` を、Dockerホスト上のCAバンドルのパスに置き換えてください。

`service-docker-setup` で `docker-compose.yml` を生成する場合は、`docker compose up` を実行する前に、生成されたファイルへ `KEEPER_SSL_CERT_FILE` エントリとボリュームマウントを追加してください。

サービスモードのセットアップについて詳しくは、[Dockerによるデプロイ](/keeperpam/jp/commander-cli/service-mode-rest-api/docker-deployment.md)をご参照ください。

#### AWS Marketplace <a href="#aws-marketplace" id="aws-marketplace"></a>

[AWS Marketplace AMI](/keeperpam/jp/commander-cli/service-mode-rest-api/aws-marketplace.md) からコマンダーサービスモードをデプロイする場合は、インスタンス上でコマンダーを実行するアカウントまたはサービスの環境に `KEEPER_SSL_CERT_FILE` を設定してください。CAバンドルのPEMファイルをインスタンスにコピーし (例: `/etc/ssl/certs/` 配下)、そのパスを変数に指定します。

インスタンスからの外向き通信がTLS検査を経由する場合、変数は実行中のコマンダーサービスと同じ環境に設定する必要があります。対話型SSHセッションだけへの設定では不十分です。

`KEEPER_SSL_CERT_FILE` を変更したら、コマンダーサービスを再起動してください。

***

### 関連トピック <a href="#related-topics" id="related-topics"></a>

以下の設定はそれぞれ目的が異なり、`KEEPER_SSL_CERT_FILE` と置き換えて使うことはできません。

| トピック                       | ドキュメント                                                                                                                   |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| コマンダーのHTTPプロキシ             | [プロキシでのログイン](/keeperpam/jp/commander-cli/commander-installation-setup/logging-in.md#logging-in-with-a-proxy)             |
| RDPターゲットの証明書検証             | PAMトンネルレコード設定 (`ignore server certificate`)                                                                              |
| Keeperゲートウェイの外向きプロキシ       | [プロキシ構成](/keeperpam/jp/privileged-access-manager/getting-started/gateways/advanced-configuration/proxy-configuration.md) |
| Keeperコネクションマネージャーのサーバー証明書 | Keeperコネクションマネージャーのドキュメント                                                                                                |

***

### トラブルシューティング <a href="#troubleshooting" id="troubleshooting"></a>

| 問題                                         | 対処                                                                   |
| ------------------------------------------ | -------------------------------------------------------------------- |
| 環境変数設定後も `CERTIFICATE_VERIFY_FAILED` が発生する | 新しいターミナルを開く。変数が設定されていることを確認する。PEMファイルに公開ルートと企業ルートCAの両方が含まれていることを確認する |
| PEMパスが存在しないという警告                           | 絶対パスを使用し、ファイル権限を確認する                                                 |
| ログインは成功するが、PAM検出がSSLエラーで失敗する               | PAMトンネルのWebSocket接続を確認する                                             |
| スケジュールされたタスクは失敗するが、対話型シェルでは動作する            | タスクまたはシステム環境に `KEEPER_SSL_CERT_FILE` を設定する                           |
| サービスモードのヘルスチェックは成功するが、Keeper API呼び出しが失敗する  | SSHセッションだけでなく、コンテナまたはインスタンスの環境に `KEEPER_SSL_CERT_FILE` を設定する         |

詳しくは、[トラブルシューティング](/keeperpam/jp/commander-cli/troubleshooting-commander-cli.md)をご参照ください。または<commander@keepersecurity.com>までご連絡ください。

***


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.keeper.io/keeperpam/jp/commander-cli/commander-installation-setup/configuration/ssl-tls-and-custom-ca-certificates.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
