Connect RegScale to AWS GovCloud RDS, internal PKI, or private MSSQL without disabling certificate validation
If RegScale fails at startup with a SQL pre-login handshake error such as:
your SQL Server is presenting a certificate signed by a Certificate Authority (CA) that is not in the container's default trust store. Common cases:
TrustServerCertificate=True is not a real fix.
Microsoft.Data.SqlClient versions when chain validation is enforced upstream.The proper fix is to add the missing CA certs to the pod's trust store. As of chart version 3.1.9, the chart supports this directly via app.extraCATrust.
When app.extraCATrust.enabled: true:
emptyDir.SSL_CERT_FILE=/etc/ssl/custom/ca-bundle.pem, which .NET / OpenSSL respect for TLS chain validation.readOnlyRootFilesystem: true and runAsNonRoot: true. No image rebuild is required.
kubectl access to the RegScale namespace.For other GovCloud regions, replace us-gov-east-1 in the URL with your region. The AWS-published bundle includes the full intermediate chain โ that's exactly what's needed.
Obtain the root CA (and any intermediates) from your security/PKI team as a PEM file. If you have a .cer or .crt in DER format, convert it:
Pick one โ ConfigMap is the most common choice for public AWS RDS roots.
You can include multiple files by passing --from-file more than once. Every file in the resource is appended to the bundle, so include only certs you trust.
Use this if your security policy mandates secrets for CA material (rare for public roots, common for internal PKI):
Add to your RegScale values file (or --set flags):
configMapName or secretName. The chart will refuse to render if both are set, or if enabled: true with neither.
Keep your connection string with TrustServerCertificate=False:
Real chain validation will now succeed because your DB's CA is in the trust bundle the pod uses.
After the rollout, confirm the init container ran successfully:
Expected output (cert count will vary by image and how many PEMs you added):
Then confirm the main container is past the pre-login handshake:
PartialChain / pre-login handshake errors.
When AWS rotates RDS CA certificates (or your internal PKI rolls a new root), update the ConfigMap and restart the pods:
You do not need to change values or re-run helm upgrade unless the ConfigMap name changes.
| Symptom | Cause / fix |
|---|---|
helm template fails: "app.extraCATrust.enabled is true but neither ... is set" |
You set enabled: true but forgot configMapName / secretName. Provide one. |
helm template fails: "set either configMapName or secretName, not both" |
Pick one. |
Init container build-ca-trust in Error state with "no system CA bundle found" |
The container image doesn't have a CA bundle in any of the standard paths (/etc/ssl/certs/ca-certificates.crt, /etc/pki/tls/certs/ca-bundle.crt, /etc/ssl/cert.pem). Contact RegScale support โ the base image is missing ca-certificates. |
merged 1 certs ... (only one cert) and handshake still fails |
Your ConfigMap/Secret contained only one entry. Make sure the PEM file actually includes the full chain โ open it in a text editor and confirm multiple -----BEGIN CERTIFICATE----- blocks. |
| Handshake still fails after init container reports many certs | The CA file you mounted is for a different region/environment than your DB endpoint. Re-download from the URL matching your RDS region. |
Main container still throws PartialChain |
Your image's .NET version may not honor SSL_CERT_FILE. Contact RegScale support โ a follow-up overlay of the OS bundle path can be added. |
runAsNonRoot, readOnlyRootFilesystem, and dropped capabilities as the main container โ it has no special privileges.emptyDir and never touches the node's persistent storage.