{ "info": { "author": "Thomas Mendoza", "author_email": "mendoza33@llnl.gov", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Utilities" ], "description": "Certipy\n=======\n\nA simple python tool for creating certificate authorities and\ncertificates on the fly.\n\nIntroduction\n------------\n\nCertipy was made to simplify the certificate creation process. To that\nend, Certipy exposes methods for creating and managing certificate\nauthorities, certificates, signing and building trust bundles. Behind\nthe scenes Certipy:\n\n- Manages records of all certificates it creates\n\n - External certs can be imported and managed by Certipy\n - Maintains signing hierarchy\n\n- Persists certificates to files with appropriate permissions\n\nUsage\n-----\n\nCommand line\n~~~~~~~~~~~~\n\nCreating a certificate authority:\n\nCertipy defaults to writing certs and certipy.json into a folder called\n``out`` in your current directory.\n\n::\n\n $ certipy foo\n FILES {'ca': '', 'cert': 'out/foo/foo.crt', 'key': 'out/foo/foo.key'}\n IS_CA True\n SERIAL 0\n SIGNEES None\n PARENT_CA\n\nCreating and signing a key-cert pair:\n\n::\n\n $ certipy bar --ca-name foo\n FILES {'ca': 'out/foo/foo.crt', 'key': 'out/bar/bar.key', 'cert': 'out/bar/bar.crt'}\n IS_CA False\n SERIAL 0\n SIGNEES None\n PARENT_CA foo\n\nRemoval:\n\n::\n\n certipy --rm bar\n Deleted:\n FILES {'ca': 'out/foo/foo.crt', 'key': 'out/bar/bar.key', 'cert': 'out/bar/bar.crt'}\n IS_CA False\n SERIAL 0\n SIGNEES None\n PARENT_CA foo\n\nCode\n~~~~\n\nCreating a certificate authority:\n\n::\n\n from certipy import Certipy\n\n certipy = Certipy(store_dir='/tmp')\n certipy.create_ca('foo')\n record = certipy.store.get_record('foo')\n\nCreating and signing a key-cert pair:\n\n::\n\n certipy.create_signed_pair('bar', 'foo')\n record = certipy.store.get_record('bar')\n\nCreating trust:\n\n::\n\n certipy.create_ca_bundle('ca-bundle.crt')\n\n # or to trust specific certs only:\n certipy.create_ca_bundle_for_names('ca-bundle.crt', ['bar'])\n\nRemoval:\n\n::\n\n record = certipy.remove_files('bar')\n\nRecords are dicts with the following structure:\n\n::\n\n {\n 'serial': 0,\n 'is_ca': true,\n 'parent_ca': 'ca_name',\n 'signees': {\n 'signee_name': 1\n },\n 'files': {\n 'key': 'path/to/key.key',\n 'cert': 'path/to/cert.crt',\n 'ca': 'path/to/ca.crt',\n }\n }\n\nThe ``signees`` will be empty for non-CA certificates. The ``signees``\nfield is stored as a python ``Counter``. These relationships are used to\nbuild trust bundles.\n\nInformation in Certipy is generally passed around as records which point\nto actual files. For most ``_record`` methods, there are generally\nequivalent ``_file`` methods that operate on files themselves. The\nformer will only affect records in Certipy\u2019s store and the latter will\naffect both (something happens to the file, the record for it should\nchange, too).\n\nRelease\n~~~~~~~\n\nCertipy is released under BSD license. For more details see the LICENSE\nfile.\n\nLLNL-CODE-754897\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/LLNL/certipy", "keywords": "pki ssl tls certificates", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "certipy", "package_url": "https://pypi.org/project/certipy/", "platform": "", "project_url": "https://pypi.org/project/certipy/", "project_urls": { "Homepage": "https://github.com/LLNL/certipy" }, "release_url": "https://pypi.org/project/certipy/0.1.3/", "requires_dist": [ "pyopenssl", "pytest ; extra == 'dev'", "pytest ; extra == 'test'" ], "requires_python": "", "summary": "Utility to create and sign CAs and certificates", "version": "0.1.3" }, "last_serial": 4955156, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "6b50e38f7d587d8a862239c9f57825b0", "sha256": "c408b14c681d65e8820e24c407b9a9bf963e8c9018c368a004f42ac234dbed0c" }, "downloads": -1, "filename": "certipy-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "6b50e38f7d587d8a862239c9f57825b0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14659, "upload_time": "2018-07-19T22:43:21", "url": "https://files.pythonhosted.org/packages/b3/e8/374ffb8b98e4c8a3201f350405225f088e5465a8b770d21ea0ff0272bac5/certipy-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f4b16221a01cafbc4149150bc339bb5f", "sha256": "c19e373737961e18aa7e09e324e3a3938ccf09ba6c028923144999f6d3d6b847" }, "downloads": -1, "filename": "certipy-0.0.1.tar.gz", "has_sig": false, "md5_digest": "f4b16221a01cafbc4149150bc339bb5f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8827, "upload_time": "2018-07-19T22:43:22", "url": "https://files.pythonhosted.org/packages/c4/18/b43aa5208f6007941f5e6698c9fe573df2954faa64e6b203b7fbe210f80f/certipy-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "fe7e4ca915c382c68c1c40663a21ee8f", "sha256": "94d9153a32e57034d3e19ad4231964cd2ba64e29c9a24bcbf2b8a419e011be38" }, "downloads": -1, "filename": "certipy-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "fe7e4ca915c382c68c1c40663a21ee8f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15031, "upload_time": "2018-07-27T22:09:49", "url": "https://files.pythonhosted.org/packages/da/29/eddb317f0bc0c83d17f41b67531404f7e224ec4329e5b44d31580e44d6ae/certipy-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e666016ddf7afbc575fa875db1385f98", "sha256": "236e654948d00a5aa5bc945325985891fab5702ae929ee2de663dd71543fc33b" }, "downloads": -1, "filename": "certipy-0.0.2.tar.gz", "has_sig": false, "md5_digest": "e666016ddf7afbc575fa875db1385f98", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9199, "upload_time": "2018-07-27T22:09:50", "url": "https://files.pythonhosted.org/packages/44/71/bb766e74e0f64bfe7bd201cec5db482d4592e34351ea6834a0907aef9ea4/certipy-0.0.2.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "d5f282689d8d61cf6fbe408e8178a4cb", "sha256": "fe05df09915ba1c696c70286fe6f89df6c4e203ceb6d5c0500e1dedbcca0e81d" }, "downloads": -1, "filename": "certipy-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d5f282689d8d61cf6fbe408e8178a4cb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19851, "upload_time": "2018-09-04T22:58:10", "url": "https://files.pythonhosted.org/packages/9a/53/d3df6fc08187118994f6760ef9c6f96e830386d1f96b69a7401e2bad8cad/certipy-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cc5fe127cf851395f04b003362296992", "sha256": "7520a8c54b32e90b8a4d933a4c95fb6069badb48e3c7862e330e87184db56ecb" }, "downloads": -1, "filename": "certipy-0.1.0.tar.gz", "has_sig": false, "md5_digest": "cc5fe127cf851395f04b003362296992", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12943, "upload_time": "2018-09-04T22:58:11", "url": "https://files.pythonhosted.org/packages/47/ef/65cc76df5086ecb66ec258417f378bbbd6dc313553c49f5322577d55f792/certipy-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "8c07c81ec0b270b7c609a7106afadecb", "sha256": "4bfd89ffd697cc9278b623f2d424acb8b0e455b99190792ba4f71ee716960447" }, "downloads": -1, "filename": "certipy-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "8c07c81ec0b270b7c609a7106afadecb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21145, "upload_time": "2018-09-13T00:29:05", "url": "https://files.pythonhosted.org/packages/66/a0/2ecd008a6c5da861f7249348db821ab557f6f074dd3387eddd5bcb2514bf/certipy-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7588da8e79b1c1ebf97119baa2df5fad", "sha256": "ef531b425255704535bc171b0be36b542228df67eca5c10c016ca377b4d85782" }, "downloads": -1, "filename": "certipy-0.1.1.tar.gz", "has_sig": false, "md5_digest": "7588da8e79b1c1ebf97119baa2df5fad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14192, "upload_time": "2018-09-13T00:29:07", "url": "https://files.pythonhosted.org/packages/9f/26/d229429bffa6c1b530e5c74f6b141d0c56c28790683850554e3771ca953e/certipy-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "06c9121592f98369e84395132a0e3b01", "sha256": "3dd0d3622a24222dd40755d2e0c111258fd67c9ab9fd2da37b298e6d5108f17a" }, "downloads": -1, "filename": "certipy-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "06c9121592f98369e84395132a0e3b01", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21145, "upload_time": "2018-09-13T00:33:19", "url": "https://files.pythonhosted.org/packages/3f/c2/e21906bf5fe2a3dd2d26fe59ab30a25ebf1d2026a27949655e84f0c4b996/certipy-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "18044ce7e2d05004ef54dda8986c5b33", "sha256": "3461c5ff28eda977185132d4c6d4393989c7dd996ba8c780b07b9b4e679d455a" }, "downloads": -1, "filename": "certipy-0.1.2.tar.gz", "has_sig": false, "md5_digest": "18044ce7e2d05004ef54dda8986c5b33", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14195, "upload_time": "2018-09-13T00:33:20", "url": "https://files.pythonhosted.org/packages/04/1e/340c66cddafdbbc378ff4ddd8659c633a162471645059fc5976b3aadf58b/certipy-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "e6e8d0b571e3ab62b342c5ca985ab3b6", "sha256": "f272c13bfa9af6b2f3f746329d08adb66af7dd0bbb08fc81175597f25a7284b5" }, "downloads": -1, "filename": "certipy-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "e6e8d0b571e3ab62b342c5ca985ab3b6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 22835, "upload_time": "2019-03-18T17:31:09", "url": "https://files.pythonhosted.org/packages/4e/c4/02194a623c03547306c5edfb6b1c0fadaa35ad7fdc2a93b2c1e5e86afc51/certipy-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "db5935a74d3c8b924ceef4ae0b3a8d40", "sha256": "695704b7716b033375c9a1324d0d30f27110a28895c40151a90ec07ff1032859" }, "downloads": -1, "filename": "certipy-0.1.3.tar.gz", "has_sig": false, "md5_digest": "db5935a74d3c8b924ceef4ae0b3a8d40", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15271, "upload_time": "2019-03-18T17:31:11", "url": "https://files.pythonhosted.org/packages/3a/b3/f9228354c1eac06cd3577a981571b9188392d73d583fcaa7a8f3fb374a56/certipy-0.1.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e6e8d0b571e3ab62b342c5ca985ab3b6", "sha256": "f272c13bfa9af6b2f3f746329d08adb66af7dd0bbb08fc81175597f25a7284b5" }, "downloads": -1, "filename": "certipy-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "e6e8d0b571e3ab62b342c5ca985ab3b6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 22835, "upload_time": "2019-03-18T17:31:09", "url": "https://files.pythonhosted.org/packages/4e/c4/02194a623c03547306c5edfb6b1c0fadaa35ad7fdc2a93b2c1e5e86afc51/certipy-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "db5935a74d3c8b924ceef4ae0b3a8d40", "sha256": "695704b7716b033375c9a1324d0d30f27110a28895c40151a90ec07ff1032859" }, "downloads": -1, "filename": "certipy-0.1.3.tar.gz", "has_sig": false, "md5_digest": "db5935a74d3c8b924ceef4ae0b3a8d40", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15271, "upload_time": "2019-03-18T17:31:11", "url": "https://files.pythonhosted.org/packages/3a/b3/f9228354c1eac06cd3577a981571b9188392d73d583fcaa7a8f3fb374a56/certipy-0.1.3.tar.gz" } ] }