HTTPS で Inference を提供
独自の TLS 証明書、カスタム証明書パス、暗号化キー、相互 TLS を使って、self-hosted の Roboflow Inference サーバーを HTTPS で提供します。
推論サーバーは、独自の TLS 証明書と秘密鍵を指定すると、HTTPS を直接提供できます。これは、コンテナの前に TLS 終端リバースプロキシを置けないセルフホスト型デプロイに有用です。
HTTPS はすべて環境変数で設定されます。
環境変数
ENABLE_HTTPS
メインスイッチ。HTTPS を有効にするには、True、1、または yes に設定します。
False
SSL_CERTFILE
コンテナ内の、PEM 形式でエンコードされた証明書へのパス。
/etc/inference/certs/server.crt
SSL_KEYFILE
コンテナ内の、PEM 形式でエンコードされた秘密鍵へのパス。
/etc/inference/certs/server.key
SSL_KEYFILE_PASSWORD
暗号化された秘密鍵のパスフレーズ。
未設定
SSL_CA_CERTS
クライアント証明書(mTLS)の検証に使用される CA バンドル。
未設定
証明書と鍵のパスのデフォルトは /etc/inference/certs/...なので、最も簡単なデプロイでは、証明書と鍵をそのパスにマウントして、 ENABLE_HTTPS=true.
もし ENABLE_HTTPS が設定されているのに証明書または鍵が見つからない場合、サーバーは読み取ろうとしたパスを列挙したエラーを出して起動を拒否します。
自己署名証明書でのクイックスタート
以下の例では、CPU イメージを https://localhost:9001 で、自己署名証明書を使って実行します。本番環境では、証明書生成の手順を自分の CA 発行証明書に置き換えてください。
# 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 このリクエストでは生成した証明書を信頼しつつ、証明書とホスト名の検証は維持します。
カスタム証明書パス
証明書がデフォルト以外の場所にある場合は、パスを明示的に設定します:
暗号化された秘密鍵
Python および shell の Uvicorn 起動ツールでは、秘密鍵が暗号化されている場合、パスフレーズを SSL_KEYFILE_PASSWORD で指定します。並列の Gunicorn 起動ツールはそのオプションをサポートしておらず、保留中の runtime-hardening ビルドでは起動時にそれを拒否します。暗号化された鍵には Uvicorn を使用してください。パスフレーズはイメージに埋め込まず、シークレットストアに保存してください。
相互 TLS
で説明されている保留中の runtime-hardening ビルドでは、 セキュリティ設定の移行、 ENABLE_HTTPS=True と SSL_CA_CERTS をマウントしたクライアント CA バンドルに設定すると、クライアント証明書を必須にできます。その後、Python および shell の Uvicorn 起動ツールと並列の Gunicorn 起動ツールは、その CA によって署名された有効な証明書を持たないクライアントを拒否します。
以前の起動ツールは、クライアント証明書を要求せずに CA バンドルを読み込める場合がありました。強制適用の修正がないビルドでは、アクセス制御をその設定だけに依存しないでください。
クライアント証明書で接続する
クライアントの証明書と秘密鍵の両方を指定し、サーバーをその CA で検証します:
mTLS が有効な場合、API キー認証の対象外であるエンドポイントであっても、アプリケーション、ヘルスプローブ、メトリクススクレイパーはすべてクライアント証明書を必要とします。この境界に依存する前に、クライアント証明書なしのリクエストが失敗することを確認してください。
HTTPS なしの SSL_CA_CERTS サーバーのみの TLS を維持します。 サーバーのセキュリティ ネットワークアクセスと Workspace 認証について確認してください。
最終更新
役に立ちましたか?