All Projects → paragonie → Certainty

paragonie / Certainty

Licence: other
Automated cacert.pem management for PHP projects

Projects that are alternatives of or similar to Certainty

Cli
🧰 A zero trust swiss army knife for working with X509, OAuth, JWT, OATH OTP, etc.
Stars: ✭ 2,151 (+743.53%)
Mutual labels:  security-tools, tls, certificate
Docker Ssllabs Scan
Qualys sslabs-scan utility in a tiny docker image
Stars: ✭ 85 (-66.67%)
Mutual labels:  security-tools, tls
Certificates
🛡️ A private certificate authority (X.509 & SSH) & ACME server for secure automated certificate management, so you can use TLS everywhere & SSO for SSH.
Stars: ✭ 3,693 (+1348.24%)
Mutual labels:  security-tools, tls
sslcontext-kickstart
🔐 A lightweight high level library for configuring a http client or server based on SSLContext or other properties such as TrustManager, KeyManager or Trusted Certificates to communicate over SSL TLS for one way authentication or two way authentication provided by the SSLFactory. Support for Java, Scala and Kotlin based clients with examples. Av…
Stars: ✭ 295 (+15.69%)
Mutual labels:  tls, certificate
Cert
Cert is the Go tool to get TLS certificate information.
Stars: ✭ 166 (-34.9%)
Mutual labels:  tls, certificate
Mutual Tls Ssl
🔐 Tutorial of setting up Security for your API with one way authentication with TLS/SSL and mutual mutual authentication for a java based web server and a client with both Spring Boot. Different clients are provided such as Apache HttpClient, OkHttp, Spring RestTemplate, Spring WebFlux WebClient Jetty and Netty, the old and the new JDK HttpClient, the old and the new Jersey Client, Google HttpClient, Unirest, Retrofit, Feign, Methanol, vertx, Scala client Finagle, Featherbed, Dispatch Reboot, AsyncHttpClient, Sttp, Akka, Requests Scala, Http4s Blaze, Kotlin client Fuel, http4k, Kohttp and ktor. Also other server examples are available such as jersey with grizzly. Also gRPC examples are included
Stars: ✭ 163 (-36.08%)
Mutual labels:  tls, certificate
acme2
Another PHP client for acme protocal (version 2) implementation, used for generating letsencrypt's free ssl certificates.
Stars: ✭ 45 (-82.35%)
Mutual labels:  composer, certificate
Pem
Easy PEM file parsing in Python.
Stars: ✭ 122 (-52.16%)
Mutual labels:  tls, certificate
concerto
A command line tool and a library to generate TLS certificates for development purposes.
Stars: ✭ 34 (-86.67%)
Mutual labels:  tls, certificate
cert-manager
Automatically provision and manage TLS certificates in Kubernetes
Stars: ✭ 8,781 (+3343.53%)
Mutual labels:  tls, certificate
qsslcaudit
test SSL/TLS clients how secure they are
Stars: ✭ 22 (-91.37%)
Mutual labels:  tls, certificate
Acmetool
🔒 acmetool, an automatic certificate acquisition tool for ACME (Let's Encrypt)
Stars: ✭ 1,882 (+638.04%)
Mutual labels:  tls, certificate
Aspnetcorecertificates
Certificate Manager in .NET Core for creating and using X509 certificates
Stars: ✭ 135 (-47.06%)
Mutual labels:  tls, certificate
Ssl exporter
Exports Prometheus metrics for SSL certificates
Stars: ✭ 211 (-17.25%)
Mutual labels:  tls, certificate
Certstrap
Tools to bootstrap CAs, certificate requests, and signed certificates.
Stars: ✭ 1,689 (+562.35%)
Mutual labels:  tls, certificate
istio-csr
istio-csr is an agent that allows for Istio workload and control plane components to be secured using cert-manager.
Stars: ✭ 81 (-68.24%)
Mutual labels:  tls, certificate
Icingaweb2 Module X509
Keeps track of certificates as they are deployed in a network environment.
Stars: ✭ 78 (-69.41%)
Mutual labels:  tls, certificate
Ssl Checker
Python script that collects SSL/TLS information from hosts
Stars: ✭ 94 (-63.14%)
Mutual labels:  tls, certificate
smtplib-bruteforce
bruteforcing gmail (TLS/SSL)
Stars: ✭ 26 (-89.8%)
Mutual labels:  tls, certificate
freshcerts
ACME certificate protocol (Let's Encrypt) proxy client with a dashboard and monitoring
Stars: ✭ 59 (-76.86%)
Mutual labels:  tls, certificate

Certainty - CA-Cert Automation for PHP Projects

Build Status Latest Stable Version Latest Unstable Version License Downloads

Automate your PHP projects' cacert.pem management. Read the blog post introducing Certainty.

Requires PHP 5.5 or newer. Certainty should work on any operating system (including Windows), although the symlink feature may not function in Virtualbox Shared Folders.

Who is Certainty meant for?

  • Open source developers with no control over where their code is deployed (e.g. Magento module developers).
  • People whose code might be deployed in weird environments with CACert bundles that are outdated or in unpredictable locations.
  • People who are generally forced between:
    1. Disabling certificate validation entirely, or
    2. Increasing their support burden to deal with corner-cases where suddenly HTTP requests are failing on weird systems

Certainty allows your software to "just work" (which is usually the motivation for disabling certificate validation) without being vulnerable to man-in-the-middle attacks.

Motivation

Many HTTP libraries require you to specify a file path to a cacert.pem file in order to use TLS correctly. Omitting this file means either disabling certificate validation entirely (which enables trivial man-in-the-middle exploits), connection failures, or hoping that your library falls back safely to the operating system's bundle.

In short, the possible outcomes (from best to worst) are as follows:

  1. Specify a cacert file, and you get to enjoy TLS as it was intended. (Secure.)
  2. Omit a cacert file, and the OS maybe bails you out. (Uncertain.)
  3. Omit a cacert file, and it fails closed. (Connection failed. Angry customers.)
  4. Omit a cacert file, and it fails open. (Data compromised. Hurt customers. Expensive legal proceedings.)

Obviously, the first outcome is optimal. So we built Certainty to make it easier to ensure open source projects do this.

Installing Certainty

From Composer:

composer require paragonie/certainty:^2

Certainty will keep certificates up to date via RemoteFetch, so you don't need to update Certainty library just to get fresh CA-Cert bundles. Update only for bugfixes (especially security fixes) and new features.

Non-Supported Use Case:

If you are not using RemoteFetch (which is strongly recommended that you do, and we only provide support for systems that do use RemoteFetch), then you want to use dev-master rather than a version constraint, due to the nature of CA Certificates.

If a major CA gets compromised and their certificates are revoked, you don't want to continue trusting these certificates.

Furthermore, in the event of avoiding RemoteFetch, you should be running composer update at least once per week to prevent stale CA-Cert files from causing issues.

Using Certainty

See the documentation.

What Certainty Does

Certainty maintains a repository of all the cacert.pem files since 2017, along with a sha256sum and Ed25519 signature of each file. When you request the latest bundle, Certainty will check both these values (the latter can only be signed by a key held by Paragon Initiative Enterprises, LLC) for each entry in the JSON value, and return the latest bundle that passes validation.

The cacert.pem files contained within are reproducible from Mozilla's bundle.

How is Certainty different from composer/ca-bundle?

The key differences are:

  • Certainty will keep the CA-Cert bundles on your system up-to-date even if you do not run composer update.
  • We sign our CA-Cert bundles using Ed25519, and check every update into the PHP community Chronicle.

Support Contracts

If your company uses this library in their products or services, you may be interested in purchasing a support contract from Paragon Initiative Enterprises.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].