curl exits with 77 (CURLE_SSL_CACERT_BADFILE) when the CA bundle file it was pointed at is missing or unreadable. Three causes: (1) /etc/ssl/certs/ca-certificates.crt missing — the ca-certificates package is not installed, (2) inside a container (alpine, scratch) the CA bundle is absent, (3) the CURL_CA_BUNDLE env var points at a non-existent file.
Below: details, example, related, FAQ.
# Debian/Ubuntu: install bundle
$ apt-get install ca-certificates
# Alpine (Docker)
$ apk add --no-cache ca-certificates
$ update-ca-certificates
# Debug — which bundle curl sees
$ curl -v https://example.com 2>&1 | grep -i "CAfile\|CApath"
# Default via env
$ export CURL_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crtSSL/TLS is the encryption protocol that protects data between the browser and server. Our tool analyzes the certificate, chain of trust, TLS version, and knownvulnerabilities.
Issuer, validity period, signature algorithm, covered domains (SAN), and validation type (DV/OV/EV).
Full chain verification: from leaf certificate through intermediates to root CA.
Protocol version (TLS 1.2/1.3), cipher suites, Perfect Forward Secrecy (PFS) support.
Set up a monitor — get Telegram and email alerts 30/14/7 days before expiration.
SSL certificate monitoring
TLS config audit
HTTPS as ranking factor
customer trust
www and subdomains.Strict-Transport-Security header forces browsers to always use HTTPS.SSL certificate monitoring, check history and alerts 30 days before expiry.
Sign up freeYes if you add ca-certificates. Scratch — you need to copy the bundle from a builder image.
Images like alpine:latest usually ship ca-certificates. gcr.io/distroless/base too. Check your Dockerfile.
Either --cacert pointing at the self-signed CA, or import into the system bundle via update-ca-certificates.