{ "info": { "author": "Aleksey Zhukov", "author_email": "drdaeman@drdaeman.pp.ru", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3 :: Only", "Topic :: Internet :: WWW/HTTP", "Topic :: Security", "Topic :: Security :: Cryptography" ], "description": "=========\nle_client\n=========\n\nThis is yet another ACME/Let's Encrypt client.\nIt's inspired by acme-tiny, but does things differently.\n\n.. image:: https://travis-ci.org/drdaeman/le_client.svg?branch=master\n :target: https://travis-ci.org/drdaeman/le_client\n\n\nRequirements\n------------\n\n- The client is written in Python 3.\n It's incompatible with Python 2.x at the moment.\n\n- There are no dependencies on any third-party\n Python modules. The code should run fine on\n a bare Python setup, without anything from PyPI.\n\n- You need ``openssl`` command-line executable available\n for use in ``PATH``. It's used for keys and certificate\n request parsing.\n\n\nFeatures and limitations\n------------------------\n\n- Does not know anything about servers or software.\n Its only purpose is to obtain a signed certificate.\n\n- Currently, the only supported challenge type is\n ``http-01`` (webroot).\n\n- Does not require any fancy privileges.\n\n It needs to access the certificate request, have write\n access to ``/.well-known/acme-challenge/`` and can output\n the obtained certificate to a file or on stdout.\n\n- It works with either local account key file,\n or can use a special remote service that can sign\n requests.\n\n That was the primary reason why I wrote my own client:\n I didn't want to keep an account's private key\n on the untrusted machine.\n\n- Currently, it only supports EC-256 account keys.\n It's easy to add other curve sizes and RSA support,\n but I'm lazy.\n\n- It's meant to be either usable as a standalone\n command-line utility, or as a simple Python library.\n\n\nRemote account key protocol\n---------------------------\n\nThis client supports a special mode of operation where\nit doesn't have a local account private key, but asks\na remote service to sign whatever payload it needs.\n\nA remote service is located at a single URL, served\nover HTTPS. To authenticate the client, CLI currently\nsupports only HTTP Basic Authentication.\n\nTo sign, we send POST request to a given URL,\nappending ``nonce`` query parameter, and sending\nthe payload as the POST body. We expect the server\nto answer with 200 OK an return a JWS as a response.\n\nThat's the whole protocol description.\n\n\nLicense\n-------\n\nCopyright (c) 2016, Aleksey Zhukov\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nSee ``LICENSE`` file for more information.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/drdaeman/le_client", "keywords": null, "license": "GNU GPLv3+", "maintainer": null, "maintainer_email": null, "name": "le-client", "package_url": "https://pypi.org/project/le-client/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/le-client/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/drdaeman/le_client" }, "release_url": "https://pypi.org/project/le-client/0.2/", "requires_dist": null, "requires_python": null, "summary": "Yet another simple Let's Encrypt/ACME client", "version": "0.2" }, "last_serial": 2236449, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "96a8e513c7d851c0e0e552c9d5758db9", "sha256": "540a4c1c3593ab0ef5efd10a21150642b685ea8dddce32d43b804b51287ee928" }, "downloads": -1, "filename": "le_client-0.1-py3.4.egg", "has_sig": true, "md5_digest": "96a8e513c7d851c0e0e552c9d5758db9", "packagetype": "bdist_egg", "python_version": "3.4", "requires_python": null, "size": 25780, "upload_time": "2016-04-25T22:15:48", "url": "https://files.pythonhosted.org/packages/d6/e4/7552b12791c961c6a1a82b2daa4c5a77668ed83583caa9100a3d495096db/le_client-0.1-py3.4.egg" }, { "comment_text": "", "digests": { "md5": "4a683dfe9d06a112582cbccca6614231", "sha256": "8d9bb8eccb2506ff95c0529e39d4566db84bee13732c5b7c1aadb979c96fe452" }, "downloads": -1, "filename": "le_client-0.1-py3.5.egg", "has_sig": true, "md5_digest": "4a683dfe9d06a112582cbccca6614231", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 25702, "upload_time": "2016-04-25T22:21:25", "url": "https://files.pythonhosted.org/packages/ce/27/c9a648174517185bead03db38576653c71369f872f7769b4eee2ffdae018/le_client-0.1-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "e861c373a8f8377964c39534c838a28a", "sha256": "a9383d3e5603c4bfdbe0be2a6c3d4e461fc5c982f441fc1a59eedca975e814ec" }, "downloads": -1, "filename": "le-client-0.1.tar.gz", "has_sig": true, "md5_digest": "e861c373a8f8377964c39534c838a28a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9649, "upload_time": "2016-04-25T22:15:34", "url": "https://files.pythonhosted.org/packages/f3/12/2abf017641d22ac7a51ba2b4ef0805785a86b1cd3e46af064f0a7323bdc2/le-client-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "8a3cf2c103a759a2c3d19cb87c80390e", "sha256": "1f5ae405a74df44bb3165b713c0798a52321204b4494984fcbb1017dc8c30d92" }, "downloads": -1, "filename": "le_client-0.2-py3.4.egg", "has_sig": true, "md5_digest": "8a3cf2c103a759a2c3d19cb87c80390e", "packagetype": "bdist_egg", "python_version": "3.4", "requires_python": null, "size": 26449, "upload_time": "2016-07-21T19:32:42", "url": "https://files.pythonhosted.org/packages/40/bc/6fbc4111a6470aaae3e3018ab38f30260d39a7d421cc469583f2f357f641/le_client-0.2-py3.4.egg" }, { "comment_text": "", "digests": { "md5": "7a686ac146b6e61ac7bcd580fc8c7f48", "sha256": "8f47a9c16fc9ce1908a9bc7bec00b227061a7f54c21d016e1cabac1d5ec6c207" }, "downloads": -1, "filename": "le-client-0.2.tar.gz", "has_sig": true, "md5_digest": "7a686ac146b6e61ac7bcd580fc8c7f48", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9920, "upload_time": "2016-07-21T19:32:36", "url": "https://files.pythonhosted.org/packages/28/7f/9b313945434bfc4d8117c31174a0b9228912080cada68c9ceb181707f19f/le-client-0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8a3cf2c103a759a2c3d19cb87c80390e", "sha256": "1f5ae405a74df44bb3165b713c0798a52321204b4494984fcbb1017dc8c30d92" }, "downloads": -1, "filename": "le_client-0.2-py3.4.egg", "has_sig": true, "md5_digest": "8a3cf2c103a759a2c3d19cb87c80390e", "packagetype": "bdist_egg", "python_version": "3.4", "requires_python": null, "size": 26449, "upload_time": "2016-07-21T19:32:42", "url": "https://files.pythonhosted.org/packages/40/bc/6fbc4111a6470aaae3e3018ab38f30260d39a7d421cc469583f2f357f641/le_client-0.2-py3.4.egg" }, { "comment_text": "", "digests": { "md5": "7a686ac146b6e61ac7bcd580fc8c7f48", "sha256": "8f47a9c16fc9ce1908a9bc7bec00b227061a7f54c21d016e1cabac1d5ec6c207" }, "downloads": -1, "filename": "le-client-0.2.tar.gz", "has_sig": true, "md5_digest": "7a686ac146b6e61ac7bcd580fc8c7f48", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9920, "upload_time": "2016-07-21T19:32:36", "url": "https://files.pythonhosted.org/packages/28/7f/9b313945434bfc4d8117c31174a0b9228912080cada68c9ceb181707f19f/le-client-0.2.tar.gz" } ] }