SSL/TLSクライアント認証

KCMにSSL/TLSクライアント認証を強制

Keeper Connection Managerは、SSL/TLSクライアント認証を要求するように設定できます。

クライアント証明書の概要

Keeper Connection Managerにデバイスベースのアクセスセキュリティを実装するには、NGINXクライアント証明書を使用してこれを実現できます。 クライアント証明書はユーザーの承認済みデバイスのウェブブラウザにインストールされ、サーバーはクライアント証明書がインストールされたデバイスからの通信のみを受け入れます。

この高度な保護を有効にする手順を以下で説明します。

(1) 認証局 (CA) 鍵の作成

強力な自動生成パスフレーズを使用してCA鍵を生成します。パスフレーズは必ずKeeperボルトに保存してください。

openssl genrsa -des3 -out ca.key 4096

(2) CA証明書の作成

CA鍵を使用して証明書を作成します。質問に答えるときは、コモンネームとメールは空のままにしておくことができます。 国、州、地域、組織について入力した情報は、後で証明書を更新するときに必要になる場合があるため保存します。

openssl req -new -x509 -days 365 -key ca.key -out ca.crt

補足:証明書のパラメータを分析するには、以下のコマンドを実行します。

openssl x509 -in ca.crt -noout -text

(3) クライアント鍵の作成

エンドユーザーデバイスのクライアント鍵を生成する必要があります。すべてのデバイスに対して1つの鍵を生成するか、各ユーザーが独自の鍵を生成して証明書を要求するかを設定できます。どちらにも設定できます。 強力な自動生成パスフレーズを使用してクライアント鍵を生成します。パスフレーズは必ずKeeperボルトに保存してください。

openssl genrsa -des3 -out client.key 4096

(4) CSRの作成

クライアント鍵ごとにCSRを生成して、署名付き証明書を作成します。

openssl req -new -key client.key -out client.csr

(5) CA鍵でCSRに署名

openssl x509 -req -days 365 -in client.csr \
 -CA ca.crt -CAkey ca.key \
 -set_serial 01 -out client.crt

要求に署名するには、手順1で生成したCAパスフレーズを入力する必要があります。

これで、署名付きクライアント証明書 (client.crt) が利用できるようになりました。

(6) クライアント証明書をPKCS#12に変換

証明書をウェブブラウザにインポートするには通常、PKCS#12のpfxファイルが必要です。以下のコマンドを使用して、client.pfxファイルを生成します。パスフレーズが必要になります。このパスフレーズは、証明書をインストールする必要があるユーザーごとに設定されるため、使用はこの目的に限定されます。

openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.pfx

(7) NGINXの設定に追加

SSL/TLSクライアント認証を要求するようにkeeper/guacamole-ssl-nginxイメージを設定するには、環境変数CLIENT_CERTIFICATE_FILEを指定します。ユーザーは、この証明書によって署名された秘密鍵にブラウザがアクセスできる場合にのみ、ブラウザを使用してNGINXのKCMインスタンスに接続できるようになります。

この変数は、コンテナ内のファイルを指すという点でCERTIFICATE_FILE環境変数に似ていますが、この場合は、_クライアント_の秘密鍵の認証に使用される証明書を管理します。

以下に例を示します。

    ssl:
        image: keeper/guacamole-ssl-nginx:2
        restart: unless-stopped
        ports:
            - "80:80"
            - "443:443"
        environment:
            ACCEPT_EULA:"Y"
            GUACAMOLE_HOSTNAME: guacamole
            SSL_HOSTNAME: keeper.mycompany.com
            CLIENT_CERTIFICATE_FILE: "/path/in/container/ca.crt"
        volumes:
            - "/local/path/to/keys:/path/in/container/"

設定を更新したら、コンテナを再起動します。

(8) 設定のテスト

ユーザーのマシンにクライアント証明書をインストールする前に、Keeper Connection Managerのログイン画面を読み込んで、以下の403エラーが送信されることを確認します。

(9) クライアント証明書のインストール

Keeper Connection Managerにアクセスする必要があるエンドユーザーのクライアントデバイスごとに、クライアント証明書をユーザーのブラウザまたはマシンにインストールする必要があります。クライアント証明書のインストールはプラットフォームによって異なります。

Windowsの場合

手順6のクライアント証明書 (client.pfx) をダブルクリックまたは右クリックして、クライアント証明書のパスフレーズを入力します。

ブラウザを再起動します。

次回Keeper Connection Managerを読み込んだときに、証明書を承認してください。

Mac OSの場合-Chrome

client.pfxファイルをダブルクリックするか、キーチェーンログイン証明書セクションに読み込んでインポートします。 証明書の「Trust」 (信頼) セクションで、「Always Trust」 (常に信頼) を選択します。

ブラウザを再起動し、Keeper Connection Managerのログイン画面を読み込んで証明書を選択します。

Mac OSの場合-Firefox

Firefoxを開いて、画面右上のメニューをクリックし、「オプション」をクリックし、「プライバシーとセキュリティ」メニューより「証明書を表示(C)」をクリックします。「認証局証明書」タブより「インポート」をクリックし、client.pfx証明書ファイルを選択してインポートします。

インポートが成功すると、Keeper Connection Managerのログイン画面が読み込まれます。

オプションパラメータ

SSL/TLS認証の動作をさらに変更するために、以下の追加の環境変数も利用できます。

変数

説明

デフォルト

ADDITIONAL_PROXY_CONFIG

NGINXがGuacamoleのプロキシとして機能するように設定するlocationブロック内に含める必要のある、任意の追加のNGINX設定ステートメント。

SSL_VERIFY_CLIENT

NGINXがクライアント(ブラウザ)が提示する証明書を要求および検証する方法とその要否を管理します。NGINXのssl_verify_clientディレクティブで設定します。

on

SSL_VERIFY_DEPTH

NGINXがクライアントの証明書を検証しようとするときに、クライアントの証明書チェーンを確認する深さを管理します。NGINXのssl_verify_depthディレクティブで設定します。

1

Last updated