Resolving Adobe I/O CLI RDE deployment failures caused by certificate and proxy configuration
Adobe I/O CLI commands against Rapid Development Environments (RDE) fail in enterprise networks when corporate proxies intercept HTTPS traffic or outbound firewall rules block Adobe Cloud Manager and Azure endpoints. The failures appear as certificate validation errors, proxy authentication errors, or network blocks, because corporate proxies replace SSL certificates with internally signed ones that Node.js doesn’t trust unless told to. Providing the corporate CA to Node.js, configuring proxy environment variables, and allowlisting the required Adobe and Azure endpoints restores RDE deployments and status checks.
Description description
Issue: Adobe I/O CLI RDE commands fail with certificate or proxy errors on enterprise networks
Description
When interacting with AEM Rapid Development Environments (RDE) using the Adobe I/O CLI, commands such as aio aem:rde:status, aio cloudmanager:list-programs, or aio aem:rde:install fail. These failures occur primarily in enterprise networks where HTTPS traffic is intercepted by corporate proxies, or where outbound firewall rules block access to Adobe Cloud Manager or Azure endpoints. Common failure modes include certificate validation errors, proxy authentication failures, and network blocks when accessing Adobe RDE APIs or the Azure File Storage endpoints used during RDE deployments.
Environment:
- Adobe Experience Manager as a Cloud Service (AEMaaCS)
- AEM Rapid Development Environments (RDE)
- Adobe I/O CLI (
@adobe/aio-cli) on Node.js - Enterprise networks with SSL-inspecting proxies or outbound firewalls
Issue/Symptoms:
- A fetch error reports that a request to the Cloud Manager programs API failed with the reason self signed certificate in certificate chain.
- ECONNREFUSED on port 443, or connect EACCES, appears when running
aio aem:rde:status. - UNABLE_TO_VERIFY_LEAF_SIGNATURE appears when uploading an artifact to Azure File Storage during
aio aem:rde:install. - 403 Proxy Authentication required, or proxy CONNECT misuse, occurs during runtime deployment.
- An App Builder template fetch fails with a 400 error due to proxy misconfiguration.
Root cause:
RDE communication depends on direct or proxy-routed HTTPS access to Adobe Cloud Manager endpoints, Adobe Developer Console endpoints, and Azure File Storage endpoints. Enterprise network proxies frequently replace SSL certificates with internally signed certificates, which Node.js doesn’t trust unless they’re provided explicitly via NODE_EXTRA_CA_CERTS. Additional causes include incomplete proxy configuration (missing HTTP_PROXY or HTTPS_PROXY), proxies that don’t support or that mishandle CONNECT tunneling, network-level blocks of domains the AIO CLI requires, and corporate machines enforcing SSL inspection that breaks TLS chain validation.
How to confirm
-
Identify the specific error type by re-running the failing command with verbose debugging:
code language-none DEBUG=* aio aem:rde:status
The terminal then displays full network stack traces, including certificate chain evaluation and proxy handshake attempts.
2. Confirm the presence of one of these patterns: SELF_SIGNED_CERT_IN_CHAIN, UNABLE_TO_VERIFY_LEAF_SIGNATURE, ECONNREFUSED, or 403 Proxy Authentication. If no detailed error appears, re-run in Node.js debug mode:
export NODE_DEBUG=http,https
Resolution resolution
-
If the error contains self signed certificate in certificate chain or similar, configure Node.js to trust the corporate proxy certificate. Obtain the proxy’s root CA certificate in
.pemform and set theNODE_EXTRA_CA_CERTSvariable.code language-none export NODE_EXTRA_CA_CERTS=/path/to/your/corp.pemOn Windows PowerShell:
code language-none $env:NODE_EXTRA_CA_CERTS="C:\path\corp.pem"Re-run the failing
aiocommand; the certificate errors should no longer appear. If the certificate isn’t accepted, confirm it’s a Base64-encoded PEM and convert it if needed:code language-none openssl x509 -inform der -in cert.cer -out cert.pem -
Configure proxy routing explicitly if the environment uses an outbound proxy. Set both environment variables, replacing the placeholders with your values:
code language-none export HTTP_PROXY="http://<user>:<pass>@<proxy>:<port>" export HTTPS_PROXY="http://<user>:<pass>@<proxy>:<port>"You can also configure AIO directly with
aio config:set HTTP_PROXYandaio config:set HTTPS_PROXY. Runaio infoand confirm it lists non-empty proxy settings. -
Test access outside the corporate VPN or LAN to isolate network filtering. Switch to a home network or disable the VPN, then run:
code language-none aio cloudmanager:list-programsIf the command succeeds off-network and returns normal JSON output, the issue is corporate filtering.
-
Request that corporate IT allowlist the required Adobe endpoints from SSL interception:
cloudmanager.adobe.io,*.adobe.io, and*.adobeioruntime.net. Once the proxy stops rewriting certificates for these domains, the command succeeds without needingNODE_TLS_REJECT_UNAUTHORIZED=0. -
If RDE deploy fails with the Azure File Storage error UNABLE_TO_VERIFY_LEAF_SIGNATURE, request that IT allow outbound HTTPS to
*.file.core.windows.net. Re-run the deployment and confirm the artifact upload reaches Azure without SSL errors. -
Confirm the Cloud Manager configuration in the CLI:
code language-none aio config:listEnsure
cloudmanager_orgid,cloudmanager_programid, andcloudmanager_environmentidexist. If any are missing, set them manually withaio config:set, then confirmaio aem:rde:statusreturns environment details. If authentication is the problem, re-authenticate withaio login. -
If proxy authentication errors persist, update the Adobe I/O CLI to the latest version, since multiple proxy bugs have been patched:
code language-none npm uninstall -g @adobe/aio-cli && npm install -g @adobe/aio-cliRun
aio infoand confirm the version reflects a recent release. If the update fails, confirm your global npm permissions allow updates.
Validation
-
Run
aio aem:rde:statusand confirm the command returns RDE runtime metadata rather than certificate or proxy errors. -
Run a small test deployment and confirm the Azure upload and RDE install succeed without SSL or proxy failures:
code language-none aio aem:rde:install -t env-config ./folder