# TLS証明書管理

このページでは、EMQX Platform APIを使用して特定のデプロイメントのTLS証明書を管理する方法（追加、表示、更新、削除）について紹介します。

## 指定したデプロイメントのTLS証明書ステータスを取得する

### URI

GET /deployments/{deployment_id}/tls

::: tip
このメソッドは60分間に60回までしかリクエストできません。{deployment_id}はデプロイメント名ではなく、デプロイメントIDです。
:::

### リクエスト

なし

### レスポンス

- **200:**

| 名称     | 型      | 説明                                             |
| :------- | :------ | :----------------------------------------------- |
| tlsType  | String  | TLSタイプ：'one-way'（片方向）、'two-way'（双方向）。 |
| expire   | String  | 証明書の有効期限日時。                            |
| status   | String  | TLS証明書のステータス：'running'（稼働中）、'pending'（作成中）。 |

- **401:** APIキー認証失敗。
- **403:** APIキーにアクセス権なし。
- **404:** デプロイメントが見つかりません。
- **429:** リクエストが制限を超えました。

### リクエスト例

```bash
curl -u key:secret -X GET {api}/deployments/ge6a1a75/tls
```

### レスポンス例

```JSON
{
  "expire": "2034-05-22 02:43:21",
  "status": "running",
  "tlsType": "one-way"
}
```

## 指定したデプロイメントのTLS証明書を作成する

### URI

POST /deployments/{deployment_id}/tls

::: tip
このメソッドは60分間に6回までしかリクエストできません。{deployment_id}はデプロイメント名ではなく、デプロイメントIDです。
:::

### リクエスト

| 名称    | 型      | 説明                                                                 |
| :------- | :------ | :------------------------------------------------------------------- |
| tlsType  | String  | TLSタイプ：'one-way'（片方向）、'two-way'（双方向）。                 |
| cert     | String  | 公開鍵証明書                                                         |
| key      | String  | 秘密鍵                                                               |
| cacert   | String  | クライアントCA証明書。証明書タイプが'two-way'の場合にアップロードが必要。 |

### レスポンス

- **200:**

| 名称    | 型      | 説明                                             |
| :------- | :------ | :----------------------------------------------- |
| tlsType  | String  | TLSタイプ：'one-way'（片方向）、'two-way'（双方向）。 |
| expire   | String  | 証明書の有効期限日時。                            |
| status   | String  | TLS証明書のステータス：'running'（稼働中）、'pending'（作成中）。 |

- **401:** APIキー認証失敗。
- **403:** APIキーにアクセス権なし。
- **404:** デプロイメントが見つかりません。
- **422:** プロパティが不正です。
- **429:** リクエストが制限を超えました。

### リクエスト例

```bash
curl -u key:secret -X POST -H 'Content-Type: application/json' -d '{"tlsType": "one-way", "cert": "-----BEGIN CERTIFICATE-----\nMII...tH6j7afSg==\n-----END CERTIFICATE-----},"key":"-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEA5bdg8Rt5A7...AjQzYRdov4inpzw==\n-----END RSA PRIVATE KEY-----"' {api}/deployments/ge6a1a75/tls
```

### レスポンス例

```JSON
{
  "expire": "2034-05-22 02:43:21",
  "status": "pending",
  "tlsType": "one-way"
}
```

## 指定したデプロイメントのTLS証明書を更新する

### URI

PUT /deployments/{deployment_id}/tls

::: tip
このメソッドは60分間に6回までしかリクエストできません。{deployment_id}はデプロイメント名ではなく、デプロイメントIDです。
:::

### リクエスト

| 名称    | 型      | 説明                                                                 |
| :------- | :------ | :------------------------------------------------------------------- |
| tlsType  | String  | TLSタイプ：'one-way'（片方向）、'two-way'（双方向）。                 |
| cert     | String  | 公開鍵証明書                                                         |
| key      | String  | 秘密鍵                                                               |
| cacert   | String  | クライアントCA証明書。証明書タイプが'two-way'の場合にアップロードが必要。 |

### レスポンス

- **200:**

| 名称    | 型      | 説明                                             |
| :------- | :------ | :----------------------------------------------- |
| tlsType  | String  | TLSタイプ：'one-way'（片方向）、'two-way'（双方向）。 |
| expire   | String  | 証明書の有効期限日時。                            |
| status   | String  | TLS証明書のステータス：'running'（稼働中）、'pending'（作成中）。 |

- **401:** APIキー認証失敗。
- **403:** APIキーにアクセス権なし。
- **404:** デプロイメントが見つかりません。
- **422:** プロパティが不正です。
- **429:** リクエストが制限を超えました。

### リクエスト例

```bash
curl -u key:secret -X PUT -H 'Content-Type: application/json' -d '{"tlsType": "one-way", "cert": "-----BEGIN CERTIFICATE-----\nMII...tH6j7afSg==\n-----END CERTIFICATE-----},"key":"-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEA5bdg8Rt5A7...AjQzYRdov4inpzw==\n-----END RSA PRIVATE KEY-----"' {api}/deployments/ge6a1a75/tls
```

### レスポンス例

```JSON
{
  "expire": "2034-05-22 02:43:21",
  "status": "pending",
  "tlsType": "one-way"
}
```

## 指定したデプロイメントのTLS証明書を削除する

### URI

DELETE /deployments/{deployment_id}/tls

::: tip
このメソッドは60分間に6回までしかリクエストできません。{deployment_id}はデプロイメント名ではなく、デプロイメントIDです。
:::

### リクエスト

なし

### レスポンス

- **401:** APIキー認証失敗。
- **403:** APIキーにアクセス権なし。
- **404:** デプロイメントが見つかりません。
- **422:** プロパティが不正です。
- **429:** リクエストが制限を超えました。

### リクエスト例

```bash
curl -u key:secret -X DELETE {api}/deployments/ge6a1a75/tls
```

### レスポンス例

```HTTP
// HTTPステータスレスポンスコード
204 
```
