Commit 9b8e0d0
committed
feat: add mTLS support for model providers
Adds mutual TLS (mTLS) authentication support for model provider
connections, allowing Codex to connect to endpoints requiring
client certificates. The implementation uses rustls exclusively -
native-tls is not supported due to Cargo's feature unification causing
both TLS backends to be linked when any dependency enables native-tls.
Configuration is done via TOML for each model provider:
```toml
[model-providers.my-provider]
base_url = "https://example.com"
tls.ca-certificate = "/path/to/ca.pem"
tls.client-certificate = "/path/to/client.pem"
tls.client-private-key = "/path/to/key.pem"
```
Paths can be absolute or relative to `~/.codex/`. All three TLS fields
are optional - omit CA certificate to use system roots, omit client
cert/key for server-only TLS.
The implementation gracefully falls back to a non-TLS client if certificate
loading fails (with error logging), ensuring connectivity isn't completely
broken by misconfigured certificates. This matches the previous behavior on
reqwest builder failures.1 parent 47cb2fc commit 9b8e0d0
File tree
11 files changed
+226
-7
lines changed- codex-rs/core
- src
- config
- openai_models
- tests
- suite
11 files changed
+226
-7
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
45 | | - | |
| 45 | + | |
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
| |||
168 | 168 | | |
169 | 169 | | |
170 | 170 | | |
171 | | - | |
| 171 | + | |
| 172 | + | |
172 | 173 | | |
173 | 174 | | |
174 | 175 | | |
| |||
253 | 254 | | |
254 | 255 | | |
255 | 256 | | |
256 | | - | |
| 257 | + | |
| 258 | + | |
257 | 259 | | |
258 | 260 | | |
259 | 261 | | |
| |||
337 | 339 | | |
338 | 340 | | |
339 | 341 | | |
340 | | - | |
| 342 | + | |
341 | 343 | | |
342 | 344 | | |
343 | 345 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2895 | 2895 | | |
2896 | 2896 | | |
2897 | 2897 | | |
| 2898 | + | |
2898 | 2899 | | |
2899 | 2900 | | |
2900 | 2901 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
1 | 3 | | |
2 | 4 | | |
3 | 5 | | |
| |||
8 | 10 | | |
9 | 11 | | |
10 | 12 | | |
| 13 | + | |
11 | 14 | | |
12 | 15 | | |
13 | 16 | | |
14 | 17 | | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
15 | 29 | | |
16 | 30 | | |
17 | 31 | | |
| |||
130 | 144 | | |
131 | 145 | | |
132 | 146 | | |
133 | | - | |
| 147 | + | |
134 | 148 | | |
135 | 149 | | |
136 | 150 | | |
| |||
262 | 276 | | |
263 | 277 | | |
264 | 278 | | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
265 | 286 | | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
266 | 322 | | |
267 | 323 | | |
268 | 324 | | |
269 | 325 | | |
270 | 326 | | |
271 | 327 | | |
272 | 328 | | |
273 | | - | |
274 | 329 | | |
275 | 330 | | |
| 331 | + | |
276 | 332 | | |
277 | 333 | | |
278 | 334 | | |
279 | 335 | | |
280 | | - | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
281 | 443 | | |
282 | 444 | | |
283 | 445 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
| 19 | + | |
19 | 20 | | |
20 | 21 | | |
21 | 22 | | |
| |||
44 | 45 | | |
45 | 46 | | |
46 | 47 | | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
47 | 78 | | |
48 | 79 | | |
49 | 80 | | |
| |||
96 | 127 | | |
97 | 128 | | |
98 | 129 | | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
99 | 134 | | |
100 | 135 | | |
101 | 136 | | |
| |||
263 | 298 | | |
264 | 299 | | |
265 | 300 | | |
| 301 | + | |
266 | 302 | | |
267 | 303 | | |
268 | 304 | | |
| |||
314 | 350 | | |
315 | 351 | | |
316 | 352 | | |
| 353 | + | |
317 | 354 | | |
318 | 355 | | |
319 | 356 | | |
| |||
342 | 379 | | |
343 | 380 | | |
344 | 381 | | |
| 382 | + | |
345 | 383 | | |
346 | 384 | | |
347 | 385 | | |
| |||
372 | 410 | | |
373 | 411 | | |
374 | 412 | | |
| 413 | + | |
375 | 414 | | |
376 | 415 | | |
377 | 416 | | |
| |||
405 | 444 | | |
406 | 445 | | |
407 | 446 | | |
| 447 | + | |
408 | 448 | | |
409 | 449 | | |
410 | 450 | | |
| |||
436 | 476 | | |
437 | 477 | | |
438 | 478 | | |
| 479 | + | |
439 | 480 | | |
440 | 481 | | |
441 | 482 | | |
| |||
458 | 499 | | |
459 | 500 | | |
460 | 501 | | |
| 502 | + | |
461 | 503 | | |
462 | 504 | | |
463 | 505 | | |
| |||
482 | 524 | | |
483 | 525 | | |
484 | 526 | | |
| 527 | + | |
485 | 528 | | |
486 | 529 | | |
487 | 530 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
128 | 128 | | |
129 | 129 | | |
130 | 130 | | |
| 131 | + | |
131 | 132 | | |
132 | 133 | | |
133 | 134 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
| 59 | + | |
59 | 60 | | |
60 | 61 | | |
61 | 62 | | |
| |||
0 commit comments