domino_admin_toolkit.checks.test_domino_url_cert module
- pydantic model domino_admin_toolkit.checks.test_domino_url_cert.DominoUrlCertExpirationAnalyzer
Bases:
AnalyzerBase[DominoUrlCertRow]Validates Domino control plane URL certificate is not expiring soon.
Checks the certificate expiration date and ensures sufficient time remains before renewal is required.
- Fields:
- analyze(data)
Analyzes one row and returns a list of CheckResult instances.
- Return type:
- Args:
data: One row dict (
TRow). The Runner calls this once per DataFrame row.- Returns:
List[CheckResult]: A list containing the results of the analysis.
- Raises:
NotImplementedError: If this method is not implemented by subclasses.
- name: ClassVar[str] = 'DominoUrlCertExpirationAnalyzer'
- class domino_admin_toolkit.checks.test_domino_url_cert.DominoUrlCertRow
Bases:
TypedDict-
cert_obj:
Certificate
-
cert_obj:
- pydantic model domino_admin_toolkit.checks.test_domino_url_cert.DominoUrlCertValidationAnalyzer
Bases:
AnalyzerBase[DominoUrlCertRow]Validates that the Domino URL certificate can be verified using the mounted bundle.
Checks if the certificate is trusted (can be verified via SSL) and provides diagnostic information about bundle contents. The mounted bundle at /etc/ssl/certs/ca-certificates.crt serves as the system trust store for the toolkit.
- Fields:
- analyze(data)
Analyzes one row and returns a list of CheckResult instances.
- Return type:
- Args:
data: One row dict (
TRow). The Runner calls this once per DataFrame row.- Returns:
List[CheckResult]: A list containing the results of the analysis.
- Raises:
NotImplementedError: If this method is not implemented by subclasses.
- name: ClassVar[str] = 'DominoUrlCertValidationAnalyzer'
- domino_admin_toolkit.checks.test_domino_url_cert.domino_url_cert_data(domino_api_client)
Fixture: Collect Domino URL certificate data for expiration checking.
- Returns:
DataFrame with certificate expiration details
- domino_admin_toolkit.checks.test_domino_url_cert.test_domino_url_cert_expiration(domino_url_cert_data, runner)
- Description:
Validates Domino control plane URL certificate is valid and not expiring soon. Retrieves the TLS certificate from the Domino platform URL and verifies it has sufficient time remaining before expiration. Focuses solely on the validity period, not verification against a trust store (see test_domino_url_cert_validation for that).
- Empty Data Behavior (reports PASS, not pytest SKIP):
When the certificate cannot be retrieved from the Domino URL (network connectivity issues), the check soft-passes via on_empty=Status.PASS so the report is not blocked
This is expected behavior in deployments where the toolkit cannot reach the frontend (e.g., network policies, firewall rules, or isolated network configurations)
- Failure Conditions:
Certificate has already expired
Certificate expires in less than 30 days
- Troubleshooting Steps:
Check certificate expiration date: echo | openssl s_client -connect <domino-url>:443 2>/dev/null | openssl x509 -noout -dates
Verify certificate renewal process is functioning correctly
Check if certificate issuer (CA) is still valid and operational
Review DNS resolution for the Domino URL: nslookup <domino-url>
- Resolution Steps:
For cert-manager-managed certs: verify the Issuer/ClusterIssuer is Ready, then trigger manual renewal: kubectl annotate certificate -n <ns> <name> cert-manager.io/issueOnce=true
For manually-managed certs: replace the Secret data with a renewed PEM certificate
See test_cert_manager.py to verify cert-manager health before troubleshooting renewal
- Required Permissions:
Network access to the Domino frontend URL from the toolkit pod
kubectl read access to Certificate CRs (if cert-manager is in use)
- See also:
test_tls_secret_expiration.py — checks in-cluster TLS Secret expiry across all namespaces
info/test_certificate_inventory.py — full cert inventory with chain validation and self-signed detection
test_cert_manager.py — cert-manager controller and CRD health
- domino_admin_toolkit.checks.test_domino_url_cert.test_domino_url_cert_validation(domino_url_cert_data, runner)
- Description:
Validates that the Domino URL certificate can be verified via the mounted bundle. Checks if the certificate is trusted using the system trust store at /etc/ssl/certs/ca-certificates.crt. For deployments using private certificate authorities or self-signed certificates, custom CA certificates must be added to Domino’s trust store — especially important for services that connect to the deployment via its public hostname, including services in remote data planes.
The check provides diagnostic information about: - Whether SSL verification succeeds - Whether the cert/CA is found in the bundle - Number of CAs in the bundle
- Documentation:
See https://docs.dominodatalab.com/en/cloud/admin_guide/77bb0e/domino-custom-certificates-configmap/ for detailed instructions on managing custom certificates in Domino.
- Empty Data Behavior (reports PASS, not pytest SKIP):
When the certificate cannot be retrieved from the Domino URL (network connectivity issues), the check soft-passes via on_empty=Status.PASS so the report is not blocked
This is expected behavior in deployments where the toolkit cannot reach the frontend (e.g., network policies, firewall rules, or isolated network configurations)
- Failure Conditions:
Certificate cannot be verified via SSL (cert/CA not in bundle)
This typically occurs when using private CAs or self-signed certificates that have not been added to Domino’s custom certificate bundle
Certificate bundle file is missing, out of date, or unreadable
Certificate is in bundle but verification still fails (chain/expiration issues)
- Troubleshooting Steps:
Determine if you are using a private CA or self-signed certificate
Check if domino-custom-certificates ConfigMap exists in the default namespace: kubectl get configmap domino-custom-certificates -n default
Verify domino-generated-certificates ConfigMap exists and contains ca-certificates.crt: kubectl get configmap domino-generated-certificates -n <namespace> -o yaml | grep ca-certificates.crt
Verify the toolkit pod has the bundle mounted: kubectl exec -n <namespace> <toolkit-pod> – ls -la /etc/ssl/certs/ca-certificates.crt
For detailed diagnostics, see the public documentation linked above
- Resolution Steps:
Add your custom CA certificate(s) to the domino-custom-certificates ConfigMap in the default namespace in PEM format. The custom-certificates-manager service will automatically sync these to domino-generated-certificates.
Restart affected services (nucleus, keycloak, data-plane-agent, toolkit, etc.) to pick up the updated certificates.
For remote data planes: ensure domino-generated-certificates is copied to the data plane namespace during initial deployment when using custom CAs.
See https://docs.dominodatalab.com/en/cloud/admin_guide/77bb0e/domino-custom-certificates-configmap/ for detailed step-by-step instructions and examples.
- See also:
test_tls_secret_expiration.py — checks in-cluster TLS Secret expiry across all namespaces
info/test_certificate_inventory.py — full cert inventory with chain validation and self-signed detection
test_cert_manager.py — cert-manager controller and CRD health