GithubHelp home page GithubHelp logo

kariustobias / acme-rs Goto Github PK

View Code? Open in Web Editor NEW
9.0 9.0 3.0 122 KB

An ACME Client for Let's Encrypt written in Rust to request SSL/TLS certificates.

License: MIT License

Rust 100.00%
acme acme-client acme-v2 hacktoberfest hacktoberfest2021 pki rust

acme-rs's People

Contributors

1c3t3a avatar djcoding avatar gsquire avatar kara3 avatar kariustobias avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

acme-rs's Issues

Implement Display + Error for the error enum

Our error type obviously represents an Error, so it would be nice to implement the trait and set an alias for Result<T> = Result<T, Error> in order to allow easy usage via Result<T>. The Display trait would just provides more specific error messages.

Add Precise error parsing

We currently don't map an error that's send from the server directly to our error type (enum Error in file error.rs). Looking at the RFC, ACME generally provides precise error information in the form urn:ietf:params:acme:error:<error-type> within a JSON object in the body of any http response. The specific response changes it's Content-Typeheader field to application/error+json. It would be nice to parse the error type from the http response.

Add another possibility of completing the http challenge

Currently we're opening a webserver ourselves, but if the server is currently running an instance of apache or nginx, we need to create a file relative to the Webserver root (usually /var/www/..) and write the token into it (this involves parsing another parameter. If mentoring is wanted, just ask.

Implement an apache2 automatic configuration

Currently, we don't actually allow requesting a certificate with a running web server (e.g. apache2). However this would be a nice feature. There are 2 benifits that need to be implemented:

  1. The webserver should be able to request an apache server without actually having to shut the current web server down.

  2. The apache2 configuration file should automatically be configured. This should require adding the parameter SSLCertificateFile, SSLCertificateKeyFile and SSLCertificateChainFile.

  3. (optional) If you want to, you can also configure some secury measures like HTTP Public Key Pinning and OCSP Stapling. This would really enhance the acme-rs client

Add an option to parse the csr from a file

Currently a Certificate Signing Request (csr) gets created for every certificate. But we could also parse the car (PEM format) from a file specified by the user. This would also involve adding a flag to the cli.

Adding a private ACME server and CA for testing purposes

An internal ACME server for testing purposes is very important for securing the functionality of amce-rs via automated tests in the future.
The idea is to set up a testing environment via docker. This should be possible with step-ca

In the future, we could therefore add a CI pipeline to automate testing.

Challenge over DNS

We currently only implement the HTTP Challenge, but the RFC specifies also a DNS challenge which involves writing a special token into a TXT entry of the servers DNS record.

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.