busya
8fd23f7ea1
refactor(ssl): centralize SSL trust management, remove LLM_SSL_VERIFY
Centralized SSL via one contract: CERTS_PATH=/opt/certs mounted into all containers.
Backend:
- NEW: backend/src/core/ssl.py — system_ssl_context(), httpx_verify(),
cert_dir_inventory()
- LLMClient._get_ssl_verify() → delegates to core.ssl
- _llm_async_http._get_verify() → delegates to core.ssl
- Removed LLM_SSL_VERIFY env reading from all runtime code
Docker:
- NEW: docker/certs.sh — shared cert installer (PEM/DER/cer to .crt conversion,
update-ca-certificates, hash symlinks, NSS import)
- NEW: docker/agent.entrypoint.sh — agent entrypoint with cert installation
- backend.entrypoint.sh → uses certs.sh instead of install_llm_ca_certs
- Dockerfile.agent → adds ca-certificates, openssl, entrypoint
Compose:
- Removed LLM_CA_CERT_URLS and LLM_SSL_VERIFY from all compose files
- Added CERTS_PATH volume mount to agent (dev + enterprise)
- Added certs volume mount to backend/agent in dev compose
Env examples:
- Removed LLM_SSL_VERIFY, LLM_CA_CERT_URLS from .env.example,
.env.enterprise-clean.example, .env.current.example, .env.master.example,
backend/.env.example
- Enhanced CERTS_PATH comments with accepted formats
Diagnostics:
- diag_container.py: removed LLM_* checks, added CERTS_PATH inventory,
uses core.ssl for context creation
Tests:
- Updated test_llm_analysis_service, test_llm_async_http,
test_client_headers to verify centralized ssl context (no env disable)
- 4/4 SSL tests pass
2026-07-06 21:00:28 +03:00
..
2026-07-06 01:23:09 +03:00
2026-07-06 01:23:20 +03:00
2026-07-01 20:47:25 +03:00
2026-07-04 22:47:17 +03:00
2026-07-06 01:23:09 +03:00
2026-06-16 00:12:49 +03:00
2026-07-06 21:00:28 +03:00
2026-06-16 00:12:49 +03:00
2026-06-16 11:01:31 +03:00
2026-07-06 01:23:20 +03:00
2026-07-06 14:24:17 +03:00
2026-07-01 20:47:25 +03:00
2026-07-06 13:45:22 +03:00
2026-07-05 14:14:42 +03:00
2026-07-04 22:47:17 +03:00
2026-07-04 22:47:17 +03:00
2026-06-01 16:34:07 +03:00
2026-05-26 19:18:28 +03:00
2026-05-26 19:18:28 +03:00
2026-06-16 00:12:49 +03:00
2026-06-10 14:57:18 +03:00
2026-06-10 14:57:18 +03:00
2026-06-15 22:04:40 +03:00
2026-06-16 11:01:31 +03:00
2026-06-10 14:57:18 +03:00
2026-06-16 11:01:31 +03:00
2026-06-16 11:01:31 +03:00
2026-07-06 01:23:09 +03:00
2026-06-15 17:31:43 +03:00
2026-06-16 12:11:49 +03:00
2026-05-26 19:18:28 +03:00
2026-06-17 16:22:30 +03:00
2026-06-16 12:01:03 +03:00
2026-06-05 15:43:35 +03:00
2026-06-16 12:11:49 +03:00
2026-06-16 12:11:49 +03:00
2026-07-06 01:23:09 +03:00
2026-05-26 19:18:28 +03:00
2026-05-26 19:18:28 +03:00
2026-06-15 19:31:56 +03:00
2026-05-26 19:18:28 +03:00
2026-05-26 19:18:28 +03:00
2026-06-16 00:12:49 +03:00
2026-06-05 15:43:35 +03:00
2026-06-15 17:31:43 +03:00
2026-06-16 11:01:31 +03:00
2026-06-15 17:31:43 +03:00
2026-06-15 16:45:49 +03:00
2026-06-15 17:31:43 +03:00
2026-07-02 08:53:19 +03:00
2026-06-15 17:31:43 +03:00
2026-06-16 12:01:03 +03:00
2026-06-16 12:11:49 +03:00
2026-05-26 19:18:28 +03:00
2026-06-18 23:54:57 +03:00
2026-06-16 12:01:03 +03:00
2026-05-26 19:18:28 +03:00
2026-07-06 01:23:09 +03:00
2026-06-16 12:11:49 +03:00
2026-06-16 12:01:03 +03:00
2026-06-16 00:12:49 +03:00
2026-06-16 00:12:49 +03:00
2026-05-26 19:18:28 +03:00
2026-05-25 08:36:33 +03:00
2026-06-29 17:15:25 +03:00
2026-06-15 19:31:56 +03:00
2026-06-11 19:12:45 +03:00
2026-05-26 19:18:28 +03:00
2026-06-11 19:12:45 +03:00
2026-06-11 19:12:45 +03:00
2026-06-17 16:22:30 +03:00
2026-06-15 22:04:40 +03:00
2026-05-26 19:18:28 +03:00
2026-06-15 22:04:40 +03:00