{ "info": { "author": "Pulp Project Developers", "author_email": "pulp-list@redhat.com", "bugtrack_url": null, "classifiers": [ "Framework :: Django", "License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "``pulp_certguard`` Plugin\n=========================\n\nThis is the ``pulp_certguard`` Plugin for the\n`Pulp Project 3.0+ `__. This plugin provides X.509 certificate\nbased content protection. The `X509CertGuard` authenticates the web request by validating the client\ncertificate passed in the ``SSL_CLIENT_CERTIFICATE`` HTTP header using the CA (Certificate\nAuthority) certificate that it has been configured with.\n\nAll REST API examples bellow use `httpie `__ to perform the requests.\nThe ``httpie`` commands below assume that the user executing the commands has a ``.netrc`` file\nin the home directory. The ``~/.netrc`` should have the following configuration:\n\n.. code-block::\n\n machine localhost\n login admin\n password admin\n\nIf you configured the ``admin`` user with a different password, adjust the configuration\naccordingly. If you prefer to specify the username and password with each request, please see\n``httpie`` documentation on how to do that.\n\nThis documentation makes use of the `jq library `_\nto parse the json received from requests, in order to get the unique urls generated\nwhen objects are created. To follow this documentation as-is please install the jq\nlibrary with:\n\n``$ sudo dnf install jq``\n\nInstall ``pulpcore``\n--------------------\n\nFollow the `installation\ninstructions `__\nprovided with pulpcore.\n\nUsers should install from **either** PyPI or source.\n\nInstall ``pulp-certguard`` from source\n--------------------------------------\n\n.. code-block:: bash\n\n source ~/pulpvenv/bin/activate\n git clone https://github.com/pulp/pulp-certguard.git\n cd pulp-certguard\n pip install -e .\n\nInstall ``pulp-certguard`` From PyPI\n------------------------------------\n\n.. code-block:: bash\n\n source ~/pulpvenv/bin/activate\n pip install pulp-certguard\n\nMake and Run Migrations\n-----------------------\n\n.. code-block:: bash\n\n django-admin makemigrations certguard\n django-admin migrate certguard\n\n\nCreate a content guard named ``foo``\n------------------------------------\n\nThis example assumes that ``~/ca.pem`` is a PEM encoded CA certificate.\n\n``$ http --form POST http://localhost:24817/pulp/api/v3/contentguards/certguard/x509/ name=foo ca_certificate@~/ca.pem``\n\n.. code:: json\n\n {\n ...\n \"_href\": \"/pulp/api/v3/contentguards/certguard/x509/3046291f-d432-4a85-9d7e-fad12b0aaed7/\",\n ...\n }\n\n``$ export GUARD_HREF=$(http localhost:24817/pulp/api/v3/contentguards/certguard/x509/?name=foo | jq -r '.results[0]._href')``\n\n\nCreate a distribution with content protection\n---------------------------------------------\n\n`` $ http POST http://localhost:24817/pulp/api/v3/distributions/ name=bar base_path=files content_guard=${GUARD_HREF}``\n\n.. code:: json\n\n {\n ...\n \"_href\": \"/pulp/api/v3/distributions/305adfe0-4851-432f-9de3-13f9b10fe131/\"\n ...\n }\n\n\nAdd content protection to an existing distribution\n--------------------------------------------------\n\n`` $ http PATCH http://localhost:24817/pulp/api/v3/distributions/1/ content_guard=${GUARD_HREF}``\n\n.. code:: json\n\n {\n ...\n \"_href\": \"/pulp/api/v3/distributions/0fbb102a-cb38-4d5c-afc2-b9a76e862a1d/\"\n ...\n }\n\n\nDownload ``protected`` content\n------------------------------\n\nThe following examples assume there is a file named ``1.iso`` published under the ``files`` distribution.\nFurther, they assume there is a PEM encoded client certificate at ``~/client.pem`` signed by the CA at ``~/ca.pem``.\nAnd, a PEM encoded private key at ``~/key.pem``.\n\n\nExample of GET directly to the content application running on port 24816 over HTTP. When setting the\n``SSL-CLIENT-CERTIFICATE`` manually, the newlines need to be stripped due to restrictions\non legal characters in HTTP header values.\n\n``$ http localhost:24816/pulp/content/files/1.iso SSL-CLIENT-CERTIFICATE:\"$(tr -d '\\n' < ~/client.pem)\"``\n\n.. code-block::\n\n +-----------------------------------------+\n | NOTE: binary data not shown in terminal |\n +-----------------------------------------+\n\n\nExample of GET through a reverse proxy using HTTPS (like apache or nginx) in front of the content\napplication. It's assumed that the reverse proxy has been configured to set the SSL-CLIENT-CERTIFICATE\nheader using the client certificate exchanged as part of the SSL negotiation.\n\n``$ http https://localhost/pulp/content/files/1.iso --cert=~/client.pem --cert-key=~/key.pem --verify=no``\n\n.. code-block::\n\n +-----------------------------------------+\n | NOTE: binary data not shown in terminal |\n +-----------------------------------------+\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://www.pulpproject.org", "keywords": "", "license": "GPLv2+", "maintainer": "", "maintainer_email": "", "name": "pulp-certguard", "package_url": "https://pypi.org/project/pulp-certguard/", "platform": "", "project_url": "https://pypi.org/project/pulp-certguard/", "project_urls": { "Homepage": "http://www.pulpproject.org" }, "release_url": "https://pypi.org/project/pulp-certguard/0.1.0rc2/", "requires_dist": [ "pulpcore-plugin (~=0.1rc1)", "PyOpenSSL" ], "requires_python": ">=3.6", "summary": "X.509 Certguards plugin for the Pulp Project", "version": "0.1.0rc2" }, "last_serial": 5864074, "releases": { "0.1.0rc1": [ { "comment_text": "", "digests": { "md5": "675eb0f61f89ad4ea09dabcef9ab2128", "sha256": "5720c037fe1bd78451d30e28e429a06e417a7c800ba16138f1c7d86eec7eb502" }, "downloads": -1, "filename": "pulp_certguard-0.1.0rc1-py3-none-any.whl", "has_sig": false, "md5_digest": "675eb0f61f89ad4ea09dabcef9ab2128", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 17205, "upload_time": "2019-03-29T20:02:30", "url": "https://files.pythonhosted.org/packages/fd/65/380448b7c1c784008950050f4642367c21ae3bb0f1880dc82364623bdc43/pulp_certguard-0.1.0rc1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bc8b412407d1e67fa40b969d70a2b61d", "sha256": "4b32ba7501b8dfbd773e7aeeff6c409acf348e4c79c7d0e739c9f2d8be91f9b7" }, "downloads": -1, "filename": "pulp-certguard-0.1.0rc1.tar.gz", "has_sig": false, "md5_digest": "bc8b412407d1e67fa40b969d70a2b61d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 15622, "upload_time": "2019-03-29T20:02:32", "url": "https://files.pythonhosted.org/packages/20/36/b1927be375a417ca5fba65037e4ba0bb4ca49e62a49ab2ca3bff09fd1930/pulp-certguard-0.1.0rc1.tar.gz" } ], "0.1.0rc2": [ { "comment_text": "", "digests": { "md5": "271f947a45cf597e705840346cb9eb6d", "sha256": "4a1d0efc120bb1a5f4daab42b7b1376600de8614c4b11dceb66be76b85ea11ed" }, "downloads": -1, "filename": "pulp_certguard-0.1.0rc2-py3-none-any.whl", "has_sig": false, "md5_digest": "271f947a45cf597e705840346cb9eb6d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 18413, "upload_time": "2019-09-20T20:41:45", "url": "https://files.pythonhosted.org/packages/d3/56/be235c9400c82ec65293794eaf53954384e52a8c213dcc77a8cf406de668/pulp_certguard-0.1.0rc2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fa41cea697db877a612b16d43113951f", "sha256": "c0ac11439154dc7b7e2f1ef6030bd40989b6fd4faf2ce911e81cd875fa98d17e" }, "downloads": -1, "filename": "pulp-certguard-0.1.0rc2.tar.gz", "has_sig": false, "md5_digest": "fa41cea697db877a612b16d43113951f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 15999, "upload_time": "2019-09-20T20:41:46", "url": "https://files.pythonhosted.org/packages/eb/cc/8e4c8f89f8ddab2046f2640e260e243ff847784945513343992c25401eb5/pulp-certguard-0.1.0rc2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "271f947a45cf597e705840346cb9eb6d", "sha256": "4a1d0efc120bb1a5f4daab42b7b1376600de8614c4b11dceb66be76b85ea11ed" }, "downloads": -1, "filename": "pulp_certguard-0.1.0rc2-py3-none-any.whl", "has_sig": false, "md5_digest": "271f947a45cf597e705840346cb9eb6d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 18413, "upload_time": "2019-09-20T20:41:45", "url": "https://files.pythonhosted.org/packages/d3/56/be235c9400c82ec65293794eaf53954384e52a8c213dcc77a8cf406de668/pulp_certguard-0.1.0rc2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fa41cea697db877a612b16d43113951f", "sha256": "c0ac11439154dc7b7e2f1ef6030bd40989b6fd4faf2ce911e81cd875fa98d17e" }, "downloads": -1, "filename": "pulp-certguard-0.1.0rc2.tar.gz", "has_sig": false, "md5_digest": "fa41cea697db877a612b16d43113951f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 15999, "upload_time": "2019-09-20T20:41:46", "url": "https://files.pythonhosted.org/packages/eb/cc/8e4c8f89f8ddab2046f2640e260e243ff847784945513343992c25401eb5/pulp-certguard-0.1.0rc2.tar.gz" } ] }