> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/deployment/ja/self-hosted/inference-server/configuration/https.md).

# HTTPS で Inference を提供

独自の TLS 証明書、カスタム証明書パス、暗号化キー、相互 TLS を使って、self-hosted の Roboflow Inference サーバーを HTTPS で提供します。

推論サーバーは、独自の TLS 証明書と秘密鍵を指定すると、HTTPS を直接提供できます。これは、コンテナの前に TLS 終端リバースプロキシを置けないセルフホスト型デプロイに有用です。

HTTPS はすべて環境変数で設定されます。

## 環境変数

<table data-search="false"><thead><tr><th>変数</th><th>説明</th><th>デフォルト</th></tr></thead><tbody><tr><td>ENABLE_HTTPS</td><td>メインスイッチ。HTTPS を有効にするには、True、1、または yes に設定します。</td><td>False</td></tr><tr><td>SSL_CERTFILE</td><td>コンテナ内の、PEM 形式でエンコードされた証明書へのパス。</td><td>/etc/inference/certs/server.crt</td></tr><tr><td>SSL_KEYFILE</td><td>コンテナ内の、PEM 形式でエンコードされた秘密鍵へのパス。</td><td>/etc/inference/certs/server.key</td></tr><tr><td>SSL_KEYFILE_PASSWORD</td><td>暗号化された秘密鍵のパスフレーズ。</td><td>未設定</td></tr><tr><td>SSL_CA_CERTS</td><td>クライアント証明書（mTLS）の検証に使用される CA バンドル。</td><td>未設定</td></tr></tbody></table>

証明書と鍵のパスのデフォルトは `/etc/inference/certs/...`なので、最も簡単なデプロイでは、証明書と鍵をそのパスにマウントして、 `ENABLE_HTTPS=true`.

もし `ENABLE_HTTPS` が設定されているのに証明書または鍵が見つからない場合、サーバーは読み取ろうとしたパスを列挙したエラーを出して起動を拒否します。

## 自己署名証明書でのクイックスタート

以下の例では、CPU イメージを `https://localhost:9001` で、自己署名証明書を使って実行します。本番環境では、証明書生成の手順を自分の CA 発行証明書に置き換えてください。

```bash
# 1. localhost で有効な自己署名の証明書/鍵ペアを生成する
mkdir -p /tmp/inference-certs
openssl req -x509 -newkey rsa:2048 -nodes \
  -keyout /tmp/inference-certs/server.key \
  -out /tmp/inference-certs/server.crt \
  -days 365 \
  -subj "/CN=localhost" \
  -addext "subjectAltName=DNS:localhost,IP:127.0.0.1"

# 2. HTTPS を有効にして推論サーバーを実行する
docker run --rm -p 127.0.0.1:9001:9001 \
  -e ENABLE_HTTPS=true \
  -v /tmp/inference-certs:/etc/inference/certs:ro \
  roboflow/roboflow-inference-server-cpu:latest

# 3. 別のシェルから検証する
curl --cacert /tmp/inference-certs/server.crt https://localhost:9001/info
```

`--cacert` このリクエストでは生成した証明書を信頼しつつ、証明書とホスト名の検証は維持します。

## カスタム証明書パス

証明書がデフォルト以外の場所にある場合は、パスを明示的に設定します:

```bash
docker run --rm -p 127.0.0.1:9001:9001 \
  -e ENABLE_HTTPS=true \
  -e SSL_CERTFILE=/run/secrets/tls/fullchain.pem \
  -e SSL_KEYFILE=/run/secrets/tls/privkey.pem \
  -v /etc/letsencrypt/live/inference.example.com:/run/secrets/tls:ro \
  roboflow/roboflow-inference-server-cpu:latest
```

## 暗号化された秘密鍵

Python および shell の Uvicorn 起動ツールでは、秘密鍵が暗号化されている場合、パスフレーズを `SSL_KEYFILE_PASSWORD` で指定します。並列の Gunicorn 起動ツールはそのオプションをサポートしておらず、保留中の runtime-hardening ビルドでは起動時にそれを拒否します。暗号化された鍵には Uvicorn を使用してください。パスフレーズはイメージに埋め込まず、シークレットストアに保存してください。

## 相互 TLS

で説明されている保留中の runtime-hardening ビルドでは、 [セキュリティ設定の移行](/deployment/ja/self-hosted/inference-server/configuration/security-migration.md#tls-client-certificates)、 `ENABLE_HTTPS=True` と `SSL_CA_CERTS` をマウントしたクライアント CA バンドルに設定すると、クライアント証明書を必須にできます。その後、Python および shell の Uvicorn 起動ツールと並列の Gunicorn 起動ツールは、その CA によって署名された有効な証明書を持たないクライアントを拒否します。

以前の起動ツールは、クライアント証明書を要求せずに CA バンドルを読み込める場合がありました。強制適用の修正がないビルドでは、アクセス制御をその設定だけに依存しないでください。

### クライアント証明書で接続する

クライアントの証明書と秘密鍵の両方を指定し、サーバーをその CA で検証します:

```bash
curl --cacert server-ca.pem \
  --cert client.crt --key client.key \
  https://localhost:9001/healthz
```

mTLS が有効な場合、API キー認証の対象外であるエンドポイントであっても、アプリケーション、ヘルスプローブ、メトリクススクレイパーはすべてクライアント証明書を必要とします。この境界に依存する前に、クライアント証明書なしのリクエストが失敗することを確認してください。

HTTPS なしの `SSL_CA_CERTS` サーバーのみの TLS を維持します。 [サーバーのセキュリティ](/deployment/ja/self-hosted/inference-server/configuration/security.md) ネットワークアクセスと Workspace 認証について確認してください。
