> 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/hi/self-hosted/inference-server/configuration/https.md).

# HTTPS के माध्यम से Inference सर्व करें

अपने स्वयं के TLS certificate, custom cert paths, encrypted keys, और mutual TLS के साथ self-hosted Roboflow Inference server को HTTPS के माध्यम से सर्व करें।

जब आप अपना TLS प्रमाणपत्र और निजी कुंजी प्रदान करते हैं, तो Inference सर्वर HTTPS को सीधे सर्व कर सकता है। यह स्व-होस्टेड परिनियोजन के लिए उपयोगी है, जहाँ आप कंटेनर के सामने TLS-समाप्ति करने वाला reverse proxy नहीं रख सकते।

HTTPS को पूरी तरह environment variables के माध्यम से कॉन्फ़िगर किया जाता है।

## Environment variables

<table data-search="false"><thead><tr><th>Description</th><th>Default</th><th>Execution providers की प्राथमिकता क्रम में सूची। यदि कोई provider आपके platform पर समर्थित नहीं है, तो warning प्रदर्शित होती है।</th></tr></thead><tbody><tr><td>Inference server के लिए HTTPS को चालू/बंद करता है। जब True हो, तो server SSL_CERTFILE और SSL_KEYFILE पढ़ता है और TLS पर traffic सेवा देता है। देखें</td><td>मुख्य स्विच। HTTPS सक्षम करने के लिए True, 1, या yes पर सेट करें।</td><td>MODEL_VALIDATION_DISABLED</td></tr><tr><td>जब ENABLE_HTTPS=True हो, तब परोसे जाने वाले PEM-encoded TLS certificate का path।</td><td>कंटेनर के भीतर PEM-encoded प्रमाणपत्र का पथ।</td><td>SSL_KEYFILE</td></tr><tr><td>SSL_CERTFILE के साथ जोड़े गए PEM-encoded TLS private key का path।</td><td>कंटेनर के भीतर PEM-encoded निजी कुंजी का पथ।</td><td>SSL_KEYFILE_PASSWORD</td></tr><tr><td>Uvicorn के लिए encrypted-key passphrase। parallel Gunicorn launcher द्वारा समर्थित नहीं।</td><td>एन्क्रिप्टेड निजी कुंजी के लिए पासफ़्रेज़।</td><td>अनसेट</td></tr><tr><td>HTTPS के लिए client CA bundle। देखें</td><td>क्लाइंट प्रमाणपत्रों (mTLS) को सत्यापित करने के लिए उपयोग किया जाने वाला CA bundle।</td><td>अनसेट</td></tr></tbody></table>

प्रमाणपत्र और कुंजी के पथ डिफ़ॉल्ट रूप से `/etc/inference/certs/...`, इसलिए सबसे सरल परिनियोजन में केवल अपने प्रमाणपत्र और कुंजी को उन पथों पर माउंट करना और सेट करना होता है `ENABLE_HTTPS=true`.

यदि `Inference server के लिए HTTPS को चालू/बंद करता है। जब True हो, तो server SSL_CERTFILE और SSL_KEYFILE पढ़ता है और TLS पर traffic सेवा देता है। देखें` सेट है, लेकिन प्रमाणपत्र या कुंजी गायब है, तो सर्वर उन पथों की सूची वाले त्रुटि संदेश के साथ शुरू होने से इनकार कर देता है जिन्हें उसने पढ़ने की कोशिश की थी।

## स्व-हस्ताक्षरित प्रमाणपत्रों के साथ त्वरित शुरुआत

नीचे दिया गया उदाहरण CPU image को चलाता है `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 सक्षम करके inference server चलाएँ
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. दूसरे shell से सत्यापित करें
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 लॉन्चरों के लिए, पासफ़्रेज़ को प्रदान करें `Uvicorn के लिए encrypted-key passphrase। parallel Gunicorn launcher द्वारा समर्थित नहीं।` जब निजी कुंजी एन्क्रिप्टेड हो। समांतर Gunicorn लॉन्चर उस विकल्प का समर्थन नहीं करता, और लंबित runtime-hardening build इसे startup पर अस्वीकार कर देता है; एन्क्रिप्टेड कुंजियों के लिए Uvicorn का उपयोग करें। पासफ़्रेज़ को image में जोड़ने के बजाय किसी secret store में रखें।

## म्यूचुअल TLS

में वर्णित लंबित runtime-hardening build में [सुरक्षा कॉन्फ़िगरेशन माइग्रेशन](/deployment/hi/self-hosted/inference-server/configuration/security-migration.md#tls-client-certificates), सेट करें `ENABLE_HTTPS=True` और `HTTPS के लिए client CA bundle। देखें` को एक mounted client CA bundle पर, ताकि client certificates आवश्यक हों। तब Python और shell Uvicorn launchers तथा parallel Gunicorn launcher उस CA द्वारा हस्ताक्षरित मान्य प्रमाणपत्र के बिना clients को अस्वीकार कर देते हैं।

पहले के launchers बिना client certificate की आवश्यकता के CA bundle लोड कर सकते थे। enforcement fix के बिना बने build पर access control के लिए केवल उस setting पर निर्भर न रहें।

### क्लाइंट प्रमाणपत्र के साथ कनेक्ट करें

क्लाइंट का प्रमाणपत्र और निजी कुंजी दोनों प्रदान करें, और सर्वर को उसके CA के विरुद्ध सत्यापित करें:

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

mTLS सक्षम होने पर, applications, health probes, और metrics scrapers—यहाँ तक कि API-key authentication से मुक्त endpoints के लिए भी—सभी को client certificates की आवश्यकता होती है। इस boundary पर भरोसा करने से पहले जाँच लें कि client certificate के बिना request विफल होती है।

के बिना HTTPS `HTTPS के लिए client CA bundle। देखें` सर्वर-केवल TLS बनाए रखता है। समीक्षा करें [सर्वर सुरक्षा](/deployment/hi/self-hosted/inference-server/configuration/security.md) नेटवर्क access और Workspace authentication के लिए।
