> 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/release-notes/jp/enterprise/keeper-connection-manager/older-versions/kcm-version-2.12.0.md).

# KCM Version 2.12.0

2023年1月27日リリース

## 新機能と改善事項

**KCM-83**: `kcm-setup.run`スクリプトから、インストール後に`docker-compose.yml`を手動で編集することなく、シークレットの取得にKSMを使用するように直接デプロイを構成できるようになりました。セットアップ中に、KSMのワンタイムトークンまたはbase64エンコードされたKSM構成を入力するための追加のプロンプトが表示されます。

**KCM-226**: `keeper/guacamole-ssl-nginx`イメージで、環境変数`CLIENT_CERTIFICATE_FILE`を指定することで、SSL/TLSクライアント認証を必須にできるようになりました。ブラウザがこの証明書によって署名された秘密鍵にアクセスできる場合にのみ、そのブラウザからNGINXへ接続できます。

この変数は、コンテナ内のファイルを指定する点で環境変数`CERTIFICATE_FILE`と似ていますが、こちらはクライアントの秘密鍵を認証するために使用する証明書を制御します。

SSL/TLS認証の動作をさらに調整するための追加の環境変数も用意されています。

| **変数**                    | **説明**                                                                                                | **デフォルト値** |
| ------------------------- | ----------------------------------------------------------------------------------------------------- | ---------- |
| `ADDITIONAL_PROXY_CONFIG` | NGINXがGuacamoleへのプロキシを構成する`location`ブロック内に追加で含められる、任意のNGINX設定ステートメントです。                               |            |
| `SSL_VERIFY_CLIENT`       | NGINXの`ssl_verify_client`ディレクティブが提供する設定に基づき、クライアント (ブラウザ) が提示する証明書をNGINXが要求・検証するかどうか、およびその方法を制御します。   | on         |
| `SSL_VERIFY_DEPTH`        | NGINXの`ssl_verify_depth`ディレクティブが提供する設定に基づき、クライアントの証明書を検証する際に、NGINXがクライアントの証明書チェーンをどこまで遡って確認するかを制御します。 | 1          |

**KCM-227**: SSL終端における複数ホスト名/構成への対応

`keeper/guacamole-ssl-nginx`イメージは、KeeperがKCM向けに提供するGuacamoleイメージのSSL終端を行うためのイメージです。これまでは、1つのホスト名と構成のみに対応していました。

```
ssl:
        image: keeper/guacamole-ssl-nginx:2
        restart: unless-stopped
        ports:
            - "80:80"
            - "443:443"
        environment:
            SELF_SIGNED: "Y"
            ACCEPT_EULA: "Y"
            CONTENT_TYPE_OPTIONS: "Y"
            CONTENT_SECURITY_POLICY: "Y"
            GUACAMOLE_HOSTNAME: "guacamole"
            SSL_HOSTNAME: "example.net"
```

KCM 2.12.0からは、YAML (またはJSON) を受け付ける専用の環境変数`SERVERS`を使用することで、`keeper/guacamole-ssl-nginx`イメージを複数のホスト名・構成で使用できるようになりました。

`SERVERS`変数には、それぞれの追加構成に適用する環境変数の名前と値のペアを含むオブジェクトの、YAML (またはJSON) 配列を指定する必要があります。\*\*指定されていない変数は、トップレベルの環境から継承されます。\*\*以下はその例です。

```
    ssl:
        image: keeper/guacamole-ssl-nginx:2
        restart: unless-stopped
        ports:
            - "80:80"
            - "443:443"
        environment:
            SELF_SIGNED: "Y"
            ACCEPT_EULA: "Y"
            CONTENT_TYPE_OPTIONS: "Y"
            CONTENT_SECURITY_POLICY: "Y"
            GUACAMOLE_HOSTNAME: "guacamole"
            
            SERVERS: |
               - SSL_HOSTNAME: "example.net"
               - SSL_HOSTNAME: "*.example.net"
```

上記の構成では、`example.net`と`*.example.net`の両方のホスト名を同等に処理するNGINXインスタンスになります。`SELF_SIGNED`が`Y`に設定されているため、どちらにもそれぞれ自己署名証明書が発行されます。

より複雑な例です。

```
    ssl:
        image: keeper/guacamole-ssl-nginx:2
        restart: unless-stopped
        ports:
            - "80:80"
            - "443:443"
        environment:
            ACCEPT_EULA: "Y"
            CONTENT_TYPE_OPTIONS: "Y"
            CONTENT_SECURITY_POLICY: "Y"
            GUACAMOLE_HOSTNAME: "guacamole"
            
            SERVERS: |
               - SSL_HOSTNAME: "example.net"
                 LETSENCRYPT_ACCEPT_TOS: "Y"
                 LETSENCRYPT_EMAIL=your.email@example.net

               - SSL_HOSTNAME: "*.example.net"
                 SELF_SIGNED: "Y"
```

上記の構成では、`*.example.net`には自己署名証明書を生成して使用し、`example.net`にはLet's Encryptから取得した証明書を使用するNGINXインスタンスになります。

{% hint style="warning" %}
`SERVERS`の値は文字列**である必要がある**ため、上記の例では`|`記号を使用しています。この記号を省略すると、それに続くYAMLはオブジェクトとして解析されてしまい、Dockerの環境変数はすべて文字列である必要があるため、`docker-compose.yml`の検証に失敗します。
{% endhint %}

{% hint style="info" %}
設定済みのホスト名に一致しないリクエストに対しては、NGINXは最初のサーバーをデフォルトとして使用します。`SERVERS`で宣言したいずれかのサーバーをこの動作にする場合は、そのサーバーを最初に記載する必要があります。
{% endhint %}

## バグ修正

* **KCM-223**: 共有接続に参加する際、参加したクライアントが (現在の画面表示のコピーを受信できず) ハングしたように見え、セッション内で画面表示に何らかの変化が起きるまでこの状態が続く不具合。
* **KCM-213**: 「User Time Zone」の設定を特定のタイムゾーンに変更した後、そのタイムゾーンをクリアしようとしても、実際にはクリアされずに、以前設定されていたタイムゾーンに戻ってしまう不具合。


---

# 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/release-notes/jp/enterprise/keeper-connection-manager/older-versions/kcm-version-2.12.0.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.
