Files
sandbox-runtime/test/fixtures/tls-terminate/ca.key
shawnm-anthropic e15986b0f3 feat(terminating-tls): Add opt-in configuration for providing CA cert and key (#247)
* Add opt-in configuration for providing CA cert and key

* Wire tlsTerminate CA loader into SandboxManager.initialize()

When network.tlsTerminate is set, initialize() loads and validates the CA
(throws on unreadable/non-PEM). reset() clears the cache. No behavior
change when tlsTerminate is unset.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Add tests for tlsTerminate config and loadMitmCA

- test/fixtures/tls-terminate/: committed test-only RSA-2048 self-signed CA
  (CN=srt-test-ca DO NOT TRUST, valid to 2126). README documents the
  generating openssl command.
- test/sandbox/mitm-ca.test.ts: load/cache/reset plus all throw paths
  (missing file, non-PEM, swapped cert/key) against the fixture CA.
- test/config-validation.test.ts: schema cases for network.tlsTerminate
  (optional, both paths required, non-empty).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-05 16:29:11 -07:00

29 lines
1.7 KiB
Plaintext

-----BEGIN PRIVATE KEY-----
MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQC8bUyNgeLAYVZi
5K70Cqv0yprbHRcgOIqgSgLnG3xX81p4oer8RnVrlwHtyXH8BtobX27aRtgUio4p
etBoxaBJ7e+lJh57EfwgmPiZc+VZXWHgKtlERWlaUPS+9Ea/6mY6lYh6YaHMvMPo
Xq/Xmk7gBydEh7PiStEcj2AVCgIPwBHphJKYG5I8xQnX5uKFcQbJCYLvA9HemONg
wdgVrYlgpAXSqVHnh+g2XquiGmO11W6k5VMR4ozUOQek0A04lClvPGSq0Q4NFQ1V
DGgbwHqCMK4K7pzfteX8J+KU6X4U2LBKnKoShI1g0RWjprUajCa3XTjt34FeBApA
fKIC2/zVAgMBAAECggEBAK3bF1g1sLea2C81G2wW8KRT0GA9zhmvsdDFmToN9UPd
SOunUn7kr/DOizwQs7g7xkCdZFXIKhWB5jvFksgpGIU+IfC6ZENfy8dz/WTxN3um
GunP/1nrxZJMwhXyo9jt+NczI5LvxG94+DXOL+b5/K7eStADeelg6OK2M4wWCOLn
2bMwy9PD3cabd5NxtsNGiuW2EFihQm6oVYy50Xwjl6GB4ry5oUfZF/8mq1npkFG1
02K/a0r5CePm42uGn8t8IyJK9GQiI+Cw7qvHZJrKUDNcv0t4BOp/eZEEIZNUpunC
RjupTCoSv5brsA/tbVkD5gm0QSHUqlSn/TvW8GfTkEECgYEA7nkLEwQ8uJP3gya6
mFWpoguCUPOJoyNOFt6CYT4Gdkb9RPL3lBYSEfZjGrt5EwCMTe2fvmgMQHxmIkwr
q+3QdygvwAs+gsD9QJNRqoxx8Hw6/20hK5QLrS6n8kIVuHmsgvHApOn/U9uHRKcL
zVmmd+4Kkt9nfpDpDvvsEQNbzsUCgYEAykafpaKUSUaLdvTNmc2jnFFQWnCN4HqD
55hNoyjdbjGPd7x5QLw4CBhR2kQqxjJ3tIZE3XVEdNZjL/t/wh4fJtSLJMKzTJtw
fd6bPKAhoSK/i2rljRdNa/JLh2JMy8om2Nuh32xA9JuhyS6BEQ3r+2pxZuu93Cj1
vCieP47KVtECgYEA2nLjJB5jiSlyOB/IGjeOVrR4QbN1x41VwTk+8dkhjkNlSj3P
cUXuc6niCuDk/fUokVI1XPRvFLtfy9c+whXtOtoDM8aZEqm60+afjr1sukDywnyz
P/oz4Aa3LgI/Z2d+Ec1nDSqVC7ozZT4oX4naJk5WPUiMw7H27BT1oHgVJ4kCgYEA
kl10G+h+oF8Zf6Q4ObihUPVNzYNwRiSg2a5NT2i8gYX/KEcK/hqz+LeQUv3MbcoK
8GfP4Od/94NCFnBHy/D73Z8iaCEymJZJWesALWg5rV11eK6LGALqlNeoa3hn1Xab
kYOrp/2vKtCKywaJgguu3CfzkuO2aF6DIfnKOHdcVmECgYEAlxacqJvK99nvCtn0
xRoCfBx/VA8Urjn1pFf8X/l2K672nBDXT56zcPEJafo9bQim0NwtMbJn43S37KC2
jAzBbOJWG35ILeofE9FpaGRutNR9U2hbV4WFNn4XKJtt+XiOHPlasXj9rVI6HFi8
jFvT2ainozHkqWPC4ycGVmmZNlQ=
-----END PRIVATE KEY-----