# カスタムSSL証明書の使用

本ページでは、Keeperコネクションマネージャーサービスで使用するSSL証明書の作成方法について詳しく説明します。

### SSL証明書の生成と準備

SSL証明書の生成手順はプロバイダによって異なりますが、ここでは一般的な流れを記載します。

**(1)** ローカルワークステーションで秘密鍵を生成します。

```
openssl genrsa -out demo3.kcmdemo.com.key
```

**(2)** KCMに使用する予定のホスト名を必ず使用して、CSRを生成します。この場合、`demo3.kcmdemo.com`を使用する予定です。ここで重要なのは、コモンネームがドメインと正確に一致することです。

```
openssl req -new -key demo3.kcmdemo.com.key -out demo3.kcmdemo.com.csr
```

**(3)** SSL証明書を購入し、ご利用のSSL証明書プロバイダにCSRを送信します。

{% hint style="warning" %}
KCMインスタンス用に作成したSSL証明書は、この目的にのみご使用ください。他のサービスと共有のワイルドカード証明書のご使用はお控えください。
{% endhint %}

プロバイダをまだご利用でない場合は、<https://www.ssls.com/>のご利用をお勧めします。

このKCMインスタンス専用のドメイン (demo3.kcmdemo.comなど) の証明書を作成します。SSL証明書プロバイダから、署名付き証明書 (.crtファイル) と中間CA証明書を含むzipファイルが配信されます。

**(4)** 証明書が発行されたら、証明書 (.crt) とバンドル (bundle.crt) をPEMエンコードされた1つのファイルに結合します。

このファイルは以下のように書式設定する必要があります。

```
-----BEGIN CERTIFICATE-----
MIIGQjCCBSqgAwIBAgIQeLDY2eR6ZdAagFwb7A/YxzANBgkqhkiG9w0BAQsFADCB
jzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
A1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQD
.....
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGEzCCA/ugAwIBAgIQfVtRJrR2uhHbdBYLvFMNpzANBgkqhkiG9w0BAQwFADCB
iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl
yOGBQMkKW+ESPMFgKuOXwIlCypTPRpgSabuY0MLTDXJLR27lk8QyKGOHQ+SwMj4K
00u/I5sUKUErmgQfky3xxzlIPK1aEn8=
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFgTCCBGmgAwIBAgIQOXJEOvkit1HX02wQ3TE1lTANBgkqhkiG9w0BAQwFADB7
MQswCQYDVQQGEwJHQjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
...
-----END CERTIFICATE-----
```

各「END CERTIFICATE」行の後に改行が存在することにご注意ください。KCMは不正な形式の証明書を拒否します。

秘密鍵ファイルはPEMエンコードされ、以下のように書式設定されます。

```
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBBAKCAQDAvzLIMM7MnVa7z/CTLm+dTnxcd9Rn0QOVdIRIHbQnoBQ9irv6
lgNp8pnpIKp/WPcvoNKEZND08CX8Ylxbw51ccoERNBPtvyXbJtfIFu81nplqr+Lt
....
eABEVrVcYwO10apQQ0lkXWyYhTS0WuB1wFZlIiFq7RJg2X7s9tmVMw==
-----END RSA PRIVATE KEY-----
```

**(5)** 2つのファイルをKCMサーバーに転送します。

ファイルをコピーする場所は、Keeperコネクションマネージャーしているサーバー内です。

KeeperコネクションマネージャーのDocker自動インストールメソッドを使用している場合の最適なファイルの配置場所は、「/etc/kcm-setup」です。以下のように、権限を適切に設定してください。

```
sudo mv demo3.kcmdemo.com_bundle.crt /etc/kcm-setup/
sudo mv demo3.kcmdemo.com.key /etc/kcm-setup/

sudo chmod 600 /etc/kcm-setup/demo3.kcmdemo.com_bundle.crt
sudo chmod 600 /etc/kcm-setup/demo3.kcmdemo.com.key

chown root:root /etc/kcm-setup/demo3.kcmdemo.com_bundle.crt
chown root:root /etc/kcm-setup/demo3.kcmdemo.com.key
```

**(6) SSL証明書を使用して、docker-compose.ymlファイルを更新します。**

エディタを使用して、Docker Composeファイルを更新します。KCMのDocker自動インストールメソッドを使用した場合、ファイルは、`/etc/kcm-setup/docker-compose.yml`にあります。編集するセクションは以下のとおりです。

```
sudo vi /etc/kcm-setup/docker-compose.yml
```

{% code title="docker-compose.yml" overflow="wrap" %}

```yaml
        ssl:
        image: keeper/guacamole-ssl-nginx:2
        restart: unless-stopped
        ports:
            - "80:80"
            - "443:443"
        environment:
            CERTIFICATE_FILE: "/etc/ssl/certs/certificate.pem"
            PRIVATE_KEY_FILE: "/etc/ssl/certs/private.pem"
            ACCEPT_EULA: "Y"
            GUACAMOLE_HOSTNAME: "guacamole"
            SSL_HOSTNAME: "demo3.kcmdemo.com"
        volumes:
            - "/etc/kcm-setup:/etc/ssl/certs/:ro"
```

{% endcode %}

SSL\_HOSTNAMEおよびボリュームマウントのパスとファイル名を必ず編集してください。

新しい証明書でサービスを再起動する手順は以下のとおりです。

```
sudo ./kcm-setup.sh stop
sudo ./kcm-setup.sh upgrade
```

#### 年次更新

{% hint style="success" %}
証明書は、毎年更新する必要があります。大半の証明書プロバイダは、新しい証明書を生成してくれます。証明書の更新後、証明書ファイルを置き換えてサービスを再起動する必要があります。
{% endhint %}


---

# 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/keeper-connection-manager/installation/docker-compose-install/ssl-termination/using-a-custom-ssl-cert.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.
