Skip to content

Source: examples/fake_ca/__init__.py#

"""
# Fake-CA Example

Create:

- a Root CA with Max Path Length=3 suitable for accaptance in browsers
- a Provision CA based on Root CA
- a MitM CA based on Provision CA for usage in transparent tls proxies
- an example host cert based on MitM CA

## export

- ca_config
- ca_factory

"""

import pulumi
from infra.authority import (
    CACertFactory,
    create_sub_ca,
    create_host_cert,
    default_hours_ca,
    default_hours_public_cert,
)

__ca_dns_list = ["ca.totally-fine"]
__prov_dns_list = __ca_dns_list
__alt_prov_dns_list = __ca_dns_list

ca_config = {
    "ca_name": "not-at-all-suspicious-Root-CA",
    "ca_org": "Totally-Fine Inc.",
    "ca_unit": "Cyber^2-Security-Unit",
    "ca_locality": "World",
    "ca_country": "UN",
    "ca_validity_period_hours": default_hours_ca,
    "ca_max_path_length": 3,
    "ca_dns_names_list": __ca_dns_list,
    "ca_dns_names": ",".join(__ca_dns_list),
    "ca_provision_name": "not-at-all-Provision-CA",
    "ca_provision_unit": "Very Cyber Provision Unit",
    "ca_provision_dns_names_list": __prov_dns_list,
    "ca_provision_dns_names": ",".join(__prov_dns_list),
    "ca_alt_provision_name": "very-alternate-not-at-all-Provision-CA",
    "ca_alt_provision_unit": "Very Alternate Cyber Provision Unit",
    "ca_alt_provision_dns_names_list": __alt_prov_dns_list,
    "ca_alt_provision_dns_names": ",".join(__alt_prov_dns_list),
    # XXX mimic a public available root-ca chain, validity hours of certs must meet public criteria
    # https://superuser.com/questions/1492207/
    "cert_validity_period_hours": default_hours_public_cert,
    # this is a fake ca, if we throw away infrastructure, it ok to delete it too.
    "ca_protect_rootcert": False,
    # use vault because of ca_max_path_length
    "ca_create_using_vault": True,
}

ca_factory = CACertFactory("fake_ca_factory", ca_config)
pulumi.export("fake_ca_factory", ca_factory)

# example mitm cert, for usage in transparent tls proxies
mitm_ca = create_sub_ca(
    "fake_ca_mitm_ca",
    "Computer-in-the-middle-CA",
    dns_names=["mitm.totally-fine"],
    custom_ca_config=ca_config,
    custom_ca_factory=ca_factory,
    use_provision_ca=True,
    organizational_unit="Totally fine Sub-Unit",
)
pulumi.export("fake_ca_mitm_ca", mitm_ca)

# example mitm host cert
mitm_host = create_host_cert(
    "fake_mitm_host",
    "fake.google.com",
    dns_names=["fake.google.com"],
    custom_ca_config=ca_config,
    custom_ca_factory=ca_factory,
    custom_provision_ca=mitm_ca,
)
pulumi.export("fake_mitm_host", mitm_host)