paragonie/certainty
Automate and manage cacert.pem for PHP projects to ensure reliable TLS certificate validation across diverse environments. Avoid disabling verification, reduce support burden, and keep HTTP clients secure. Requires PHP 8.3+.
curl_setopt(CURLOPT_CAINFO, '/path/to/cacert.pem') hacks with a maintainable, versioned dependency.RemoteFetch verification.post-autoload-dump script to pre-fetch CA bundles during deployment, reducing runtime overhead.Adopt When:
curl_setopt(CURLOPT_VERIFYPEER, false)) or hardcodes CA paths.wget https://curl.se/ca/cacert.pem).Look Elsewhere When:
node-forge or certifi for other stacks.localhost traffic).RemoteFetch with a private Chronicle replica (supported via config).*"Certainty is a turnkey solution to eliminate TLS-related security incidents and support headaches. Today, our PHP apps risk data breaches (via expired CA bundles) or downtime (when customers deploy in non-standard environments). This package automates CA updates, ensuring we never ship vulnerable code—while reducing support tickets by 30%+ for ‘why does my API fail on Heroku?’ cases.
Cost: ~$0 (open-source) or $X for enterprise support if we need SLAs. ROI: Prevents compliance fines (PCI/HIPAA) and reputation damage from TLS failures. Takes <1 hour to integrate vs. weeks to build internally.
Ask: Approve adding
paragonie/certaintyto our base Laravel stack and CI/CD pipeline as a security non-negotiable."*
*"Certainty solves three critical pain points for our PHP ecosystem:
- No More ‘It Works on My Machine’ TLS Failures: Automatically fetches and verifies CA bundles, so apps work on shared hosting, Windows, or Docker without manual config.
- Future-Proof Security: Uses Ed25519-signed bundles and Chronicle logs to detect revoked CAs (e.g., Let’s Encrypt intermediates) before they break our apps.
- Zero Maintenance: Updates CA bundles automatically (via
RemoteFetch) or on deploy (via Composer script)—no morewgetscripts in cron jobs.How We Use It:
- Laravel: Replace
CURLOPT_CAINFOhacks withCertainty::getLatestBundle()in HTTP clients.- CI/CD: Add
post-autoload-dumpscript to pre-fetch bundles during deployments.- Open-Source: Embed in our SDKs to enforce secure defaults for downstream users.
Migration Path:
- Phase 1: Add to
composer.jsonand test in staging.- Phase 2: Replace hardcoded CA paths in Guzzle/Symfony HTTP clients.
- Phase 3: Enable
RemoteFetchin production (with fallback to local bundles).Risks: Minimal—package is used by ParagonIE (security experts) and has zero known exploits. Downtime risk: 0 (graceful fallback to OS bundles if offline)."*
How can I help you explore Laravel packages today?