Python Certificate Management Flask Sub-system
We are looking for someone who can deal with certificate signing and concepts like CSR working fully in Python, with no shell calls to openssl tools. The job includes creating a Flask Blueprint which will return JSON documents as for an AJAX API and some rough user interface only to show basic AJAX API usage.
Overall process can be described by creating a CSR, signing it our private key, packaging it in a custom format (details will be provided), making it available so the end user can download it, waiting for the end user to process the package and accept the product of such processing back as a certificate, which makes pair with the initially created CSR.
The system needs to use MongoDB and MongoEngine to store data, and will need to group the certificates and keys on a per user/account basis. Login and account authentication should be mocked up with details to be provided. We would like to avoid using GridFS and certificates can be stored as binary information on a separate collection.
Ultimately the process should also allow the end user to download the "custom package" for another try in the processing, enable CSR renew procedure and detail report about current certificates, including expire date and x509 subject information. There should be a report for current user/account certificate and all certificates on the system, which will be accessed by a super-user login.
Code must use de facto standards, including PEP 8, Flask login, logger and Blueprints. Unit tests should also be provided, using Flask test client to verify AJAX interface and ordinary unit tests to verify classes and modules built so far, making the code as "plug-able" as possible so it can be incorporated into an existing project with minor changes.
Considering the amount of details for the job and the fact that we'll require integrating it into an existing system, fast turnarounds are required daily, to make sure the produced piece will not be useless at the end, which would invalidate the acceptance.