{ "info": { "author": "Veeti Paananen", "author_email": "veeti.paananen@rojekti.fi", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3 :: Only" ], "description": "ManuaLE\n=======\n\nmanuale is a fully manual `Let's\nEncrypt `__/`ACME `__\nclient for advanced users. It is intended to be used by a human in a\nmanual workflow and contains no automation features whatsoever.\n\nWhy?\n----\n\nIsn't the point of Let's Encrypt to be automatic and seamless? Maybe,\nbut here's some reasons:\n\n- You're not comfortable with an automatic process handling something\n as critical, or your complex infrastructure doesn't allow it in the\n first place.\n\n- You already have perfect configuration management with something like\n Ansible. Renewing is a matter of dropping in a new certificate. With\n a manual client that works, it's literally a minute of work.\n\n- You want the traditional and authentic SSL installation experience of\n copying files you don't understand to your server, searching for\n configuration instructions and praying that it works.\n\nFeatures\n--------\n\n- Simple interface with no hoops to jump through. Keys and certificate\n signing requests are automatically generated: no more cryptic OpenSSL\n one-liners. (However, you do need to know what to do with generated\n certificates and keys yourself!)\n\n- Support for DNS & HTTP validation. No need to figure out how to serve\n challenge files from a live domain.\n\n- Obviously, runs without root access. Use it from any machine you\n want, it doesn't care. Internet connection recommended.\n\n- Awful, undiscoverable name.\n\n- And finally, if the ``openssl`` binary is your spirit animal after\n all, you can still bring your own keys and/or CSR's. Everybody wins.\n\nInstallation\n------------\n\nPython 3.3 or above is required.\n\nUsing your package manager\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n- Arch Linux: in the\n `AUR `__.\n\n- Fedora Linux: ``dnf install manuale``.\n\n- `Gentoo\n Linux `__.\n\n- Package maintainers wanted: your package here?\n\nUsing Docker\n~~~~~~~~~~~~\n\nThere is a Docker image on the `Docker\nHub `__.\n\nUsing pip\n~~~~~~~~~\n\nYou can install the package from\n`PyPI `__ using the ``pip`` tool.\nTo do so, run ``pip3 install manuale``.\n\nIf you're not using Windows or OS X pip may need to compile some of the\ndependencies. In this case, you need a compiler and development headers\nfor Python, OpenSSL and libffi installed.\n\nOn Debian-based distributions, these will typically be\n``gcc python3-dev libssl-dev libffi-dev``, and on RPM-based\ndistributions ``gcc python3-devel openssl-devel libffi-devel``.\n\nFrom the git repository\n~~~~~~~~~~~~~~~~~~~~~~~\n\n::\n\n git clone https://github.com/veeti/manuale ~/.manuale\n cd ~/.manuale\n python3 -m venv env\n env/bin/python setup.py install\n ln -s env/bin/manuale ~/.bin/\n\n(Assuming you have a ``~/.bin/`` directory in your ``$PATH``).\n\nQuick start\n-----------\n\nRegister an account (once):\n\n::\n\n $ manuale register me@example.com\n\nAuthorize one or more domains:\n\n::\n\n $ manuale authorize example.com\n DNS verification required. Make sure these records are in place:\n _acme-challenge.example.com. IN TXT \"(some random gibberish)\"\n Press enter to continue.\n ...\n 1 domain(s) authorized. Let's Encrypt!\n\nGet your certificate:\n\n::\n\n $ manuale issue --output certs/ example.com\n ...\n Certificate issued.\n\n Expires: 2016-06-01\n SHA256: (more random gibberish)\n\n Wrote key to certs/example.com.pem\n Wrote certificate to certs/example.com.crt\n Wrote certificate with intermediate to certs/example.com.chain.crt\n Wrote intermediate certificate to certs/example.com.intermediate.crt\n\nSet yourself a reminder for renewal!\n\nUsage\n-----\n\nYou need to create an account once. To do so, call\n``manuale register [email]``. This will create a new account key for\nyou. Follow the registration instructions.\n\nOnce that's done, you'll have your account saved in ``account.json`` in\nthe current directory. You'll need this to do anything useful. Oh, and\nit contains your private key, so keep it safe and secure.\n\n``manuale`` expects the account file to be in your working directory by\ndefault, so you'll probably want to make a specific directory to do all\nyour certificate stuff in. Likewise, created certificates get saved in\nthe current path by default.\n\nNext up, verify the domains you want a certificate for with\n``manuale authorize [domain]``. This will show you the DNS records you\nneed to create and wait for you to do it. For example, you might do it\nfor ``example.com`` and ``www.example.com``.\n\nOnce that's done, you can finally get down to business. Run\n``manuale issue example.com www.example.com`` to get your certificate.\nIt'll save the key, certificate and certificate with intermediate to the\nworking directory.\n\nThere's plenty of documentation inside each command. Run ``manuale -h``\nfor a list of commands and ``manuale [command] -h`` for details.\n\nSee also\n--------\n\n- `Best practices for server\n configuration `__\n- `Configuration generator for common\n servers `__\n- `Test your server `__\n- `Other\n clients `__\n\nLicense\n-------\n\n**The MIT License (MIT)**\n\nCopyright \u00a9 2016-2017 Veeti Paananen\n\nPermission is hereby granted, free of charge, to any person obtaining a\ncopy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be included\nin all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\nOR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/veeti/manuale", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "manuale", "package_url": "https://pypi.org/project/manuale/", "platform": "", "project_url": "https://pypi.org/project/manuale/", "project_urls": { "Homepage": "https://github.com/veeti/manuale" }, "release_url": "https://pypi.org/project/manuale/1.1.0/", "requires_dist": null, "requires_python": "", "summary": "A fully manual Let's Encrypt/ACME client", "version": "1.1.0" }, "last_serial": 2548362, "releases": { "0.1.0.dev1": [], "1.0.0": [ { "comment_text": "", "digests": { "md5": "d0f618aa85a88892b05955454fd40dd3", "sha256": "aa4866bee634e9bd8aeafdfaeafea17e19a2efafe73ae2ec2d4a9d788d14b5bb" }, "downloads": -1, "filename": "manuale-1.0.0.tar.gz", "has_sig": true, "md5_digest": "d0f618aa85a88892b05955454fd40dd3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13376, "upload_time": "2016-02-06T18:04:56", "url": "https://files.pythonhosted.org/packages/ab/0d/2e72f063fb84b50a5f34834ac9ab28d3c58248d85ef15bed7d33432f89ce/manuale-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "0bab34596274fab206f6f42218df3744", "sha256": "65301fada6d4afd765f64e2d9f609ae39bfd7997c23d8a21381dbf8ab7806fb4" }, "downloads": -1, "filename": "manuale-1.0.1.tar.gz", "has_sig": true, "md5_digest": "0bab34596274fab206f6f42218df3744", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14164, "upload_time": "2016-02-09T17:02:28", "url": "https://files.pythonhosted.org/packages/68/e0/8a085d34faad981de30d63bddc0034e114458ace261b052e8fa714e7a2da/manuale-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "6e55b962318965d78bb69879a9a859f9", "sha256": "778d37673a602305b9860b9218226c8dbccadc8366ae852c1fb6695b8cce48e7" }, "downloads": -1, "filename": "manuale-1.0.2.tar.gz", "has_sig": true, "md5_digest": "6e55b962318965d78bb69879a9a859f9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14526, "upload_time": "2016-03-20T11:02:22", "url": "https://files.pythonhosted.org/packages/d2/c1/6a3423c7ba710d44095f04fd0ef809896e049a6bf05f45e127c03d6d7211/manuale-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "1620bf91264cd13f7f58b6dfb5a592c6", "sha256": "3ee272b8e746bb0daa954d675d07c8cb803c80a04e3379ccf2d6adc664aa8fb0" }, "downloads": -1, "filename": "manuale-1.0.3.tar.gz", "has_sig": true, "md5_digest": "1620bf91264cd13f7f58b6dfb5a592c6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14673, "upload_time": "2016-08-27T16:16:16", "url": "https://files.pythonhosted.org/packages/dd/92/241fb1f213d5f4476cabd6010862c6eb9fbbddc1ecaa90929e90cdc9b143/manuale-1.0.3.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "50eadf072122b37a9947a94e1cc7de49", "sha256": "5ead5682426538dfeac95ce84033d9096b9acf00f79598538e23ae06dfb2d7f0" }, "downloads": -1, "filename": "manuale-1.1.0.tar.gz", "has_sig": true, "md5_digest": "50eadf072122b37a9947a94e1cc7de49", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15293, "upload_time": "2017-01-01T15:55:31", "url": "https://files.pythonhosted.org/packages/b0/87/eb926697135840555f03d1e71ef72ee69871569b547aa4e04fb4951a901b/manuale-1.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "50eadf072122b37a9947a94e1cc7de49", "sha256": "5ead5682426538dfeac95ce84033d9096b9acf00f79598538e23ae06dfb2d7f0" }, "downloads": -1, "filename": "manuale-1.1.0.tar.gz", "has_sig": true, "md5_digest": "50eadf072122b37a9947a94e1cc7de49", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15293, "upload_time": "2017-01-01T15:55:31", "url": "https://files.pythonhosted.org/packages/b0/87/eb926697135840555f03d1e71ef72ee69871569b547aa4e04fb4951a901b/manuale-1.1.0.tar.gz" } ] }