GithubHelp home page GithubHelp logo

catt's Introduction

Certification Authority Trust Tracker

What is CATT?

CATT (Certification Authority Trust Tracker) is a collection of scripts and data to track which certification authorities are trusted by various root CA programs.

Publishing Trusted Root Certificates

The CATT project urge root certificate program managers to publish the following information:

  • All currently approved and trusted root certificates. The preferred publishing format is X.509 certificates encoded as PEM or DER, but other formats may be usable as well (e.g., Mozilla certdata as mentioned above). Note that publishing certificate fingerprints is not enough - we do need the actual certificate.

  • All currently approved and trusted Extended Validation OIDs together with each corresponding issuing CA fingerprint.

We strongly recommend that the data above is published at a stable long-term URL, in order to be able to fetch the data automatically.

Trust Sources

Apple

Root certificates extracted using extract-osx-trust.sh and and split into files using split-bundle.pl. EV OIDs extracted using extract-osx-ev-pl.

  • Root CA: /System/Library/Keychains/SystemRootCertificates.keychain
  • EV status: /System/Library/Keychains/EVRoots.plist

Apple publish a list of trusted root certificates for iOS, but as this list does not include full certificate data (including public keys) it cannot be used by CATT.

Mozilla

Root certificates fetched using mk-ca-bundle.pl and split into files using split-bundle.pl. EV OIDs extracted using extract-mozilla-ev.py.

More information:

Microsoft

Root certificate metadata is fetched using fetch-microsoft-authroot.sh, producing a JSON file called authroot.json. Actual root certificates fetched using the contents of the JSON file by fetch-microsoft-certs.sh. EV OIDs are not yet extracted.

A ancient snapshot of trusted root certificates can also be found in xfiles/microsoft-2012-12.xlsx.

Oracle Java SE

Root certificates extracted from the Java keystore using extract-java-trust.pl.

catt's People

Contributors

divergentdave avatar jschlyter avatar nabla-c0d3 avatar secworks avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

catt's Issues

Adobe Approved Trust List

Would you be open to a PR adding Adobe's root stores from Acrobat/Reader? Granted, the certificates are used for document signing/revocation/timestamping, and not web browsing. If this is within the scope of your project, I'd be happy to write the script for it.

I have started work on the script, and I have a working proof of concept thus far. Adobe Reader X pulls the certificate list from http://trustlist.adobe.com/tl10.acrobatsecuritysettings automatically. This file is a special PDF file, which is signed by Adobe. (using PDF signing mechanisms) There is one attachment in the PDF file, which is an XML file containing base64-encoded certificates, trust options, and other metadata.

readable CertFriendlyName names (remove \u0000)

Subject: parse-microsoft-authroot.pl

I am looking at the out put of fetch-microsoft-authroot.sh in authroot.json.
The CertFriendlyName looks like that:

"CertFriendlyName" : "C\u0000e\u0000r\u0000t\u0000p\u0000l\u0000u\u0000s\u0000 \u0000R\u0000o\u0000o\u0000t\u0000 \u0000C\u0000A\u0000 \u0000G\u00002\u0000\u0000"

Doing

grep CertFriendlyName authroot.json | sed 's/\\u0000//g'

produces something really "friendly" like:

"CertFriendlyName" : "Certplus Root CA G2"

I am sure that it's easy to get that into the perl script parse-microsoft-authroot.pl. Changing

-$CertFriendlyName =~ s/\x00$//g;
+$CertFriendlyName =~ s/\x00//g;

does the job for me. But it might break other things.

Microsoft script includes CA certs that don't have server-auth EKU

The script for fetching the Microsoft trust store takes all certificates including certs that do not have the server-auth EKU, ie. that are not meant to be used for issuing web server certs. This might be the intended behavior but I thought I'd let you know just in case.

Regular updates

Hi @kirei, thanks a lot for this compilation of truststores! We use it in https://github.com/mozilla/tls-observatory to evaluate certificate trust.
One thing I've been wondering about is the freshness of the data in this repo. The Mozilla CA, for example, is updated monthly upstream but I don't believe this is reflected here. What would it take to have weekly or monthly updates of this repository? Could it be automated somehow?

Provide visual CA dump diff

We need a script that compares to directories (certs and EV info) and produces a report on what has changed between them, preferably as markdown.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.