Skip to main content

Azure Key Vault certificate utilities for the Swarmauri ecosystem

Project description

Swarmauri Logo

PyPI - Downloads Hits PyPI - Python Version PyPI - License PyPI - swarmauri_certs_azure


swarmauri_certs_azure

Community-maintained utilities for working with X.509 certificates via Azure Key Vault.

Features

  • AzureKeyVaultCertService adapter that plugs into Swarmauri's certificate service architecture.
  • RFC-aligned helpers for serial number generation (RFC 5280), PEM formatting (RFC 7468), and PKCS#10 CSR creation (RFC 2986).
  • Native DefaultAzureCredential support so you can reuse the same authentication chain across tools.
  • Works with RSA 2048-bit key material—perfect for Key Vault-backed certificate issuance flows.

Prerequisites

  • Python 3.10 or newer.
  • An Azure Key Vault enabled for the Certificates and Keys resource providers.
  • Exportable RSA key material (PEM) or an Azure Key Vault key that can be exported for CSR signing.
  • Azure credentials configured for DefaultAzureCredential (e.g., AZURE_CLIENT_ID, managed identity, or CLI login).

Installation

# pip
pip install swarmauri_certs_azure

# poetry
poetry add swarmauri_certs_azure

# uv (pyproject-based projects)
uv add swarmauri_certs_azure

Quickstart

Generate a CSR using AzureKeyVaultCertService and store it for downstream issuance:

import asyncio
from pathlib import Path

from azure.identity import DefaultAzureCredential

from swarmauri_certs_azure.certs import AzureKeyVaultCertService
from swarmauri_core.crypto.types import KeyRef


async def main() -> None:
    service = AzureKeyVaultCertService(
        vault_url="https://example-vault.vault.azure.net/",
        credential=DefaultAzureCredential(),
    )

    key_ref = KeyRef(material=Path("app-private-key.pem").read_bytes())
    csr_bytes = await service.create_csr(
        key=key_ref,
        subject={"CN": "app.example.com"},
        san={"dns": ["app.example.com", "www.app.example.com"]},
    )

    Path("app.csr").write_bytes(csr_bytes)
    print("CSR written to app.csr")


if __name__ == "__main__":
    asyncio.run(main())

Integrate with Azure Certificate Workflows

After generating the CSR, import it into Azure Key Vault or an external CA:

from pathlib import Path

from azure.identity import DefaultAzureCredential
from azure.keyvault.certificates import CertificateClient

vault_url = "https://example-vault.vault.azure.net/"
client = CertificateClient(vault_url=vault_url, credential=DefaultAzureCredential())

csr_bytes = Path("app.csr").read_bytes()

poller = client.begin_create_certificate(
    certificate_name="app-cert",
    policy={
        "contentType": "application/x-pem-file",
        "csr": csr_bytes,
    },
)

certificate = poller.result()
print("Certificate operation state:", certificate.properties.x509_thumbprint)

For external issuance, submit app.csr to your CA, then store the returned certificate chain back in Key Vault using set_certificate_contacts and import_certificate.

Testing

Run tests with:

uv run --package swarmauri_certs_azure --directory community pytest

Best Practices

  • Prefer managed identities or workload identity federation over client secrets in production.
  • Scope Key Vault permissions tightly (get, sign, unwrapKey) for the keys used by this service.
  • Rotate keys and certificates ahead of expiry; the helper functions simplify CSR generation for renewals.
  • Persist generated CSRs and issued certificates securely to aid in auditing and disaster recovery.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

swarmauri_certs_azure-0.3.3.dev3.tar.gz (8.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

swarmauri_certs_azure-0.3.3.dev3-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file swarmauri_certs_azure-0.3.3.dev3.tar.gz.

File metadata

  • Download URL: swarmauri_certs_azure-0.3.3.dev3.tar.gz
  • Upload date:
  • Size: 8.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for swarmauri_certs_azure-0.3.3.dev3.tar.gz
Algorithm Hash digest
SHA256 1d668cf9da0f664f49fa6e2bd7dd94359adb5c99e9cc798150db81d20dd6468d
MD5 e29f3e87f043ecf99b4cbb575dedbbe7
BLAKE2b-256 6fecb4a2476ccafc5ec4e51c2e5c48699cdb591cd749c8be274be12532f9096a

See more details on using hashes here.

File details

Details for the file swarmauri_certs_azure-0.3.3.dev3-py3-none-any.whl.

File metadata

  • Download URL: swarmauri_certs_azure-0.3.3.dev3-py3-none-any.whl
  • Upload date:
  • Size: 9.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for swarmauri_certs_azure-0.3.3.dev3-py3-none-any.whl
Algorithm Hash digest
SHA256 5a3a47115d32e2973360d10a53814dfc06f7e7ab2d2e2932e9708f72501c69df
MD5 38b01e05012a4dc9fd1426647c6a6f0c
BLAKE2b-256 e2830d03f137b7c616a70a0f426378525b64060b99a0874669e95c7f8ec166bc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page