Accessing sandbox-manager via E2B Protocol with Self-Signed Certificates
This document provides a best practice for accessing sandbox-manager via self-signed certificates, including how to create certificates through an optimized script, how to install certificates in the cluster, and how to configure the E2B client.
If your deployment uses the Helm charts together with cert-manager, you can skip the manual certificate steps below:
with enableTLS=true on both charts, cert-manager issues the ingress certificate directly into the
sandbox-manager-tls Secret and trust-manager distributes the shared CA. See
Managing sandbox-manager Self-Signed Certificates with cert-manager for the chart-native
workflow.
Prerequisitesâ
sandbox-manageris installed in the cluster- Ensure the
sandbox-manageringress is active (has an entrypoint). You can confirm this using the following command. The Address column should not be empty:
$ kubectl get ingress sandbox-manager -n sandbox-system
Step 1: Create Certificatesâ
Create self-signed certificates using the script generate-certificate.sh. You can view the script usage with the following command.
$ bash generate-certificates.sh --help
Usage: generate-certificates.sh [OPTIONS]
Options:
-d, --domain DOMAIN Add a base domain; may be specified multiple times
DOMAIN and *.DOMAIN will both be added
-o, --output DIR Specify output directory (default: .)
-D, --days DAYS Specify certificate validity days (default: 365)
--ca-key PATH Reuse an existing CA private key
--ca-cert PATH Reuse the matching existing CA certificate; it must
be authorized to sign and valid for --days
-h, --help Show this help message
Examples:
generate-certificates.sh -d example1.com -d example2.com
generate-certificates.sh --domain example1.com --domain example2.com --days 730
generate-certificates.sh -d example.com --ca-key ca-key.pem --ca-cert ca-cert.pem
After completing certificate generation, you will obtain the following files:
- fullchain.pem: Server certificate public key
- privkey.pem: Server certificate private key
- ca-fullchain.pem: CA certificate public key
- ca-privkey.pem: CA certificate private key
For every base domain passed with --domain, the script adds both the base domain and its wildcard name to the
certificate SANs. For example, -d example1.com -d example2.com covers example1.com, *.example1.com,
example2.com, and *.example2.com. This supports multiple native and private E2B endpoints served by the same
sandbox-manager.
By default, each run creates a new CA. To issue another server certificate from the same trust root, pass the existing
CA key and certificate together with --ca-key and --ca-cert. The CA must be valid for the requested lifetime and
authorized to sign certificates.
Step 2: Install Certificatesâ
Mount the server certificate to the cluster's Ingress using the following command:
$ kubectl create secret tls sandbox-manager-tls \
--cert=fullchain.pem \
--key=privkey.pem -n sandbox-system
Certificate activation may have some delay, depending on your ingress controller's efficiency.
Step 3: Configure Client Trustâ
The client needs to set the environment variable SSL_CERT_FILE to the path of the CA public key file (
ca-fullchain.pem) generated in Step 1:
$ export SSL_CERT_FILE=/path/to/ca-fullchain.pem