Giter VIP home page Giter VIP logo

crocs-muni / usable-cert-validation Goto Github PK

View Code? Open in Web Editor NEW
19.0 3.0 3.0 1 MB

Research initiative to make TLS certificate validation usable.

Home Page: https://x509errors.org

License: MIT License

Shell 0.49% Makefile 0.63% HTML 1.22% Ruby 0.75% JavaScript 0.15% Python 14.29% C++ 0.62% C 10.39% Java 70.53% SCSS 0.89% CMake 0.03%
certificate-validation tls-certificates documentation x509 hacktoberfest

usable-cert-validation's People

Contributors

dependabot[bot] avatar ericvalcik avatar jiridanek avatar mgrabovsky avatar mukrop avatar shoracek avatar werxis avatar zacikpa avatar

Stargazers

 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

usable-cert-validation's Issues

Not so usable without JavaScript

Currently, the "rolldowns" with details about various errors cannot be expanded without JavaScript enabled, which makes the page somewhat less usable.

One solution would be to use the <details> and <summary> HTML5 elements, although they are not universally supported.

Another solution, in the spirit of progressive enhancement and unobtrusive JavaScript, the rolldowns could be expanded by default and only collapsed upon page load in browsers that run scripts.

Improve web analytics

  • Include Google Tag Manager with events on individual error boxes.
  • Create a dashboard with the overview of main events.

Constrain files exporeted in ZIP archives

Currently, the archives contain many files (certificates, keys, CSRs, expected outputs). Certificates would be sufficient.
Secondly, the folder structure in the archive can be much simpler (just the error case folder).

Change deploys system

Don't build the web on GitHub servers – build on Travis instead and just push generated files to GitHub (the same way faktaoklimatu.cz does). This way, local plugins can be used.

Set up a local build

On your local machine, set up and test a local build. At least make certs and make web should succeed. If you decide to install Jekyll, make web-local should also succeed.

You should not push changes that do not compile locally -- currently, the build is broken (you're getting notification emails with every still failing push). This in practice means the web deploy will not run and I cannot see my changes online.

Make doesn't care about failing tests in a second build

When a certificate chain fails to validate with the correct error message, the make fails.

However, if we try to build second time, then the chain had already been generated, no tests are run, and Make finishes correctly (even though it shouldn't).

What would be the correct way to solve this?

Add the explicit feedback link

  • Consider a left-docked panel asking for feedback.
  • Possibly a pop-up after highlighting text.
  • Primary is a link to GitHub issues, secondary is an email contact.

Verification commands: Multiple lines?

Currently, OpenSSL verification commands only had a single line. However, some GnuTLS commands (e.g. X509_­V_­ERR_­CRL_­HAS_­EXPIRED) have multiple lines. Are all these necessary? I do not think so. On the other hand, the possibility of multiple lines complicates displaying them.

Clean the scripts folder structure and naming

Think it through and have consistent and accessible naming and error data.

  • Error code (in various libraries?)
  • Error documentation (in OpenSSL, in other libraries?)
  • Script to generate the certificate (in various libraries?)
  • Script to validate the certificate and get the error (in various libraries?)
  • Templates for certificate generation
  • Build folder (to generate final ZIP)

Further considerations:

  • Global settings (verbosity level, folder with templates, folder for outputs, ...)
  • We want script code to be exported to web

Sort out remaining uncategorized errors

Look up what they are and where they should belong.
These are:
X509_V_ERR_AKID_SKID_MISMATCH
X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH
X509_V_ERR_NO_ISSUER_PUBLIC_KEY
X509_V_ERR_SIGNATURE_ALGORITHM_MISMATCH
X509_V_ERR_UNNESTED_RESOURCE
X509_V_ERR_OCSP_VERIFY_NEEDED

Enhance error mapping table

  • add colors for replicated / unreplicated errors
  • add all errors from other (than OpenSSL) libraries
  • separate errors mapped by hand / programmatically

Add version indication to documentation

Be transparent to which version of the documentation are we relating.

  • For now: Just indicate if it's master or a specific version.
  • Possible extensions: Selection box for different versions (required a recherche into how much does the documentation change).

Update web version generation

Update generation of the web version in the footer using metadata instead of a custom bash script (the way faktaoklimatu.cz does).
Depends on #34.

Compare errors in various libraries

Install libraries, run a CLI where available, otherwise write validation code.

  • GnuTLS
  • NSS
  • GnuPG
  • mBedTLS
  • Microsoft CryptoAPI
  • Botan
  • WolfSSL
  • OpenJDK

Simplify certificate generation scripts

E.g.:

  • Don't use intermediate CSRs if not necessary,
  • Generate a self-signed certificate in a single step.
  • Cut out the unnecessary template items (and keep a unified style of names).
    Some simplifications have been done for the new structure.

Write up methodology

Including:

  • library choice reasoning
  • related research (including ours)
  • merged pull requests based on this project

Write up the project use cases

Have descriptions/stories of the main use cases:

  • Who are we building the website for?
  • What will the people want to do there?

These will help us adjust the web to help accomplish these use cases.

First ideas:

  1. Developer looking up for the error trying to understand and solve it.
  2. Developer of a new library trying to adhere to the proposed error system.

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.