Certipy
A simple python tool for creating certificate authorities and certificates on the fly.
Introduction
Certipy was made to simplify the certificate creation process. To that end, Certipy exposes methods for creating and managing certificate authorities, certificates, signing and building trust bundles. Behind the scenes Certipy:
- Manages records of all certificates it creates
- External certs can be imported and managed by Certipy
- Maintains signing hierarchy
- Persists certificates to files with appropriate permissions
Usage
Command line
Creating a certificate authority:
Certipy defaults to writing certs and certipy.json into a folder called out
in your current directory.
$ certipy foo
FILES {'ca': '', 'cert': 'out/foo/foo.crt', 'key': 'out/foo/foo.key'}
IS_CA True
SERIAL 0
SIGNEES None
PARENT_CA
Creating and signing a key-cert pair:
$ certipy bar --ca-name foo
FILES {'ca': 'out/foo/foo.crt', 'key': 'out/bar/bar.key', 'cert': 'out/bar/bar.crt'}
IS_CA False
SERIAL 0
SIGNEES None
PARENT_CA foo
Removal:
certipy --rm bar
Deleted:
FILES {'ca': 'out/foo/foo.crt', 'key': 'out/bar/bar.key', 'cert': 'out/bar/bar.crt'}
IS_CA False
SERIAL 0
SIGNEES None
PARENT_CA foo
Code
Creating a certificate authority:
from certipy import Certipy
certipy = Certipy(store_dir='/tmp')
certipy.create_ca('foo')
record = certipy.store.get_record('foo')
Creating and signing a key-cert pair:
certipy.create_signed_pair('bar', 'foo')
record = certipy.store.get_record('bar')
Creating trust:
certipy.create_ca_bundle('ca-bundle.crt')
# or to trust specific certs only:
certipy.create_ca_bundle_for_names('ca-bundle.crt', ['bar'])
Removal:
record = certipy.remove_files('bar')
Records are dicts with the following structure:
{
'serial': 0,
'is_ca': true,
'parent_ca': 'ca_name',
'signees': {
'signee_name': 1
},
'files': {
'key': 'path/to/key.key',
'cert': 'path/to/cert.crt',
'ca': 'path/to/ca.crt',
}
}
The signees will be empty for non-CA certificates. The signees field
is stored as a python Counter. These relationships are used to build trust
bundles.
Information in Certipy is generally passed around as records which point to
actual files. For most _record methods, there are generally equivalent
_file methods that operate on files themselves. The former will only affect
records in Certipy's store and the latter will affect both (something happens
to the file, the record for it should change, too).
Release
Certipy is released under BSD license. For more details see the LICENSE file.
LLNL-CODE-754897
Release files for certipy 0.2.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| certipy-0.2.3.tar.gz | 20.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| certipy-0.2.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 40.5 kB
Release files / certipy-0.2.3.tar.gz
| Download URL | certipy-0.2.3.tar.gz |
|---|---|
| Size | 20.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4e8701e6a2f281e7a154c2f368cff4edf374009084d29788cbe8c3838897784f
|
|
BLAKE2b-256 checksum How to use checksums |
83e552feec6e388811ebbea05be3262a21888ac36941c1244a8ed061c4be3b39
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 29, 2026.
Transparency logRelease files / certipy-0.2.3-py3-none-any.whl
| Download URL | certipy-0.2.3-py3-none-any.whl |
|---|---|
| Size | 19.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7e13b6f5e78b6bbac3101e048903648efea59d3aedee6308d6fad70985c61391
|
|
BLAKE2b-256 checksum How to use checksums |
62082e968a78a302e56c6d07a7ad2f63cfa8246427e477d0152ad8a592920426
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 29, 2026.
Transparency log