Skip to content

BobBlank12/certlint

Repository files navigation


Logo



CertLint is a tool to help you view/convert/validate your certificates and keys. It can be run online or completely offline in a Docker container.

View Demo · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Prerequisites
  3. Run CertLint
  4. Clean Up
  5. Usage
  6. Roadmap
  7. Contributing
  8. Built With
  9. License

About The Project

CertLint is a project I built to improve/practice my skills in scripting, CI/CD, Docker and Kubernetes. BY NO MEANS am I claiming/attempting or wanting to be a front-end developer. You can use it "offiline" to convert/validate your own certificates and keys by running it in a Docker container.

I WOULD NOT recommend running this as a web service outside of your localhost.

  1. It uses the built in Flask web server which shouldn't be used for prod.
  2. It does a lot of file handling of certs and keys... and you should never upload your key to a web server
  3. It does not sanitize user input so the risk of being hacked is high.
  4. Ironically, I didn't run it with https (but you could use it to create a key/cert for itself. :-)

product-screenshot1

product-screenshot2

product-screenshot3

product-screenshot4

product-screenshot5

product-screenshot6

product-screenshot7

(back to top)

Prerequisites

1. Install Docker on your host: Install Docker

2. Pull the latest CertLint Docker image from the Docker repository:

docker pull bkblankdocker/certlint:latest

At this point, you can disconnect your network connections if you don't trust the container to "phone home" and steal any certificates/keys/passwords you provide.

(back to top)

Run CertLint

3. Run the container:

docker run -d -p 5000:5000 --name certlint bkblankdocker/certlint:latest

If port 5000 is in use on your host, choose another port of your preference, e.g. use port 9000

docker run -d -p 9000:5000 bkblankdocker/certlint:latest

4. Open your browser to http://localhost:5000

(back to top)

Clean up

5. Stop and remove the running certlint container

Make sure you have saved all of the converted certificates/keys you want as the next step will destory the container and any files it created for you.

docker rm -f certlint

6. Remove the certlint docker image from your machine

docker image rm bkblankdocker/certlint:latest

Re-enable your network interfaces if you disabled them above.

(back to top)

Usage

I may put some examples here... but I hope the tool is self-explanatory.

(back to top)

Roadmap

  • Decide if I will actually host this online (e.g. GKE) for people to use or just support running it in containers locally.
  • Allow users to create a new Root and Intermediate CA to sign new certificates
    • Create/Sign certificates with the CAs from above
  • Validate a private/public key are a valid pair
  • Convert keys to different formats (pkcs1-pkcs8-encrypted/unencrypted)
  • Given a CA chain, validate a certificate can be verified using that chain
  • Include support for PFX and JKS files
  • "Online version" - connect to a service and display the cert/chain in use, build a truststore from the chain

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

Built With

  • Python
  • Flask
  • Docker
  • Kubernetes
  • OpenSSL
  • Jenkins

(back to top)

License

Distributed under the MIT License. See LICENSE for more information.

(back to top)