SSL、HTTP Proxy 安全設定
如果您處於使用較舊 TTS bundle、且使用較舊加密的環境,請遵循本指南。預設情況下,LiteLLM 會使用 certifi CA bundle 進行 SSL 驗證,這與大多數現代伺服器相容。 不過,如果您需要停用 SSL 驗證或使用自訂 CA bundle,可以依照下列步驟進行。
請注意,環境變數的優先順序高於 SDK 中的設定。
LiteLLM 使用 HTTPX 進行網路請求,除非另有指定。
1. 自訂 CA Bundle
您可以使用 SSL_CERT_FILE 環境變數,或將字串傳遞給 ssl_verify 設定,來設定自訂 CA bundle 檔案路徑。
- SDK
- PROXY
- Environment Variables
import litellm
litellm.ssl_verify = "client.pem"
litellm_settings:
ssl_verify: "client.pem"
export SSL_CERT_FILE="client.pem"
2. 停用 SSL 驗證
- SDK
- PROXY
- Environment Variables
import litellm
litellm.ssl_verify = False
litellm_settings:
ssl_verify: false
export SSL_VERIFY="False"
3. 較低的安全設定
ssl_security_level 可讓您為 SSL 連線設定較低的安全等級。
- SDK
- PROXY
- Environment Variables
import litellm
litellm.ssl_security_level = "DEFAULT@SECLEVEL=1"
litellm_settings:
ssl_security_level: "DEFAULT@SECLEVEL=1"
export SSL_SECURITY_LEVEL="DEFAULT@SECLEVEL=1"
4. 憑證驗證
SSL_CERTIFICATE 環境變數或 ssl_certificate 屬性可用來設定用戶端憑證,以驗證用戶端與伺服器之間的身分。
- SDK
- PROXY
- Environment Variables
import litellm
litellm.ssl_certificate = "/path/to/certificate.pem"
litellm_settings:
ssl_certificate: "/path/to/certificate.pem"
export SSL_CERTIFICATE="/path/to/certificate.pem"
5. 設定 ECDH 曲線以提升 SSL/TLS 效能
ssl_ecdh_curve 設定可讓您設定 SSL/TLS 金鑰交換所使用的橢圓曲線 Diffie-Hellman(ECDH)曲線。這對於停用後量子密碼學(PQC)以提升在不需要 PQC 的環境中的效能特別有用。
使用情境: 某些 OpenSSL 3.x 系統預設會啟用 PQC,這可能會降低 TLS 握手速度。將 ECDH 曲線設定為 X25519 會停用 PQC,並可大幅提升連線效能。
- SDK
- PROXY
- Environment Variables
import litellm
litellm.ssl_ecdh_curve = "X25519" # Disables PQC for better performance
litellm_settings:
ssl_ecdh_curve: "X25519"
export SSL_ECDH_CURVE="X25519"
常見有效曲線:
X25519- 現代、快速的曲線(建議用於停用 PQC)prime256v1- NIST P-256 曲線secp384r1- NIST P-384 曲線secp521r1- NIST P-521 曲線
注意: 如果提供了無效的曲線名稱,或您的 Python/OpenSSL 版本不支援此功能,LiteLLM 會記錄警告並繼續使用預設曲線。
6. 使用 HTTP_PROXY 環境變數
LiteLLM 會從環境中解析 HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY,適用於每一個 LLM 請求,無論是預設的 aiohttp 傳輸還是 httpx 傳輸(DISABLE_AIOHTTP_TRANSPORT=True),不論是否有 force_ipv4。不需要額外的旗標;請在 proxy 或 SDK 啟動前設定這些變數:
- SDK
- PROXY
export HTTPS_PROXY='http://username:password@proxy_uri:port'
export NO_PROXY='localhost,127.0.0.1'
export HTTPS_PROXY='http://username:password@proxy_uri:port'
export NO_PROXY='localhost,127.0.0.1'
設定 DISABLE_AIOHTTP_TRUST_ENV=True(或 litellm.disable_aiohttp_trust_env = True)可讓 aiohttp 傳輸忽略這些變數。AIOHTTP_TRUST_ENV(或 litellm.aiohttp_trust_env)與 proxy 選擇無關:它會將 trust_env=True 傳遞給 aiohttp 工作階段,因此 aiohttp 本身也會讀取 ~/.netrc 和 SSL_CERT_FILE / SSL_CERT_DIR。
7. 依服務設定 SSL 驗證
LiteLLM 允許您針對特定服務或提供者呼叫覆寫 SSL 驗證設定。當不同服務(例如內部防護欄與公開 LLM 提供者)需要不同的 CA 憑證時,這非常有用。
Bedrock(SDK)
您可以直接在 ssl_verify 呼叫中傳遞 completion。
import litellm
response = litellm.completion(
model="bedrock/us.anthropic.claude-sonnet-5",
messages=[{"role": "user", "content": "hi"}],
ssl_verify="path/to/bedrock_cert.pem" # Or False to disable
)
AIM Guardrail(Proxy)
您可以在 ssl_verify 中,針對每個防護欄設定 config.yaml。
guardrails:
- guardrail_name: aim-protected-app
litellm_params:
guardrail: aim
ssl_verify: "/path/to/aim_cert.pem" # Use specific cert for AIM
Cato Networks Guardrail(Proxy)
您可以在 ssl_verify 中,針對每個防護欄設定 config.yaml。
guardrails:
- guardrail_name: cato-protected-app
litellm_params:
guardrail: cato_networks
ssl_verify: "/path/to/cato_cert.pem" # Use specific cert for AIM
優先順序邏輯
LiteLLM 依下列優先順序解析 ssl_verify:
- 明確參數:在
completion()或防護欄設定中傳入。 - 環境變數:
SSL_VERIFY環境變數。 - 全域設定:
litellm.ssl_verify設定。 - 系統標準:
SSL_CERT_FILE環境變數。