Azure Key Vault certificate utilities for the Swarmauri ecosystem
Project description
swarmauri_certs_azure
Community-maintained utilities for working with X.509 certificates via Azure Key Vault.
Features
AzureKeyVaultCertServiceadapter 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
DefaultAzureCredentialsupport 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file swarmauri_certs_azure-0.3.3.dev21.tar.gz.
File metadata
- Download URL: swarmauri_certs_azure-0.3.3.dev21.tar.gz
- Upload date:
- Size: 8.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fb0965d35933a22fa81d8a0f85bd4517a3feef2d2d6010b6a8d5a58ecb2f68a8
|
|
| MD5 |
a8e701bad74aa16a927480dfa2d7bbb6
|
|
| BLAKE2b-256 |
27632e0b1e1eb2a2d0acd7948742867f6f1812d7986d8d3df72b2a897b6c013c
|
File details
Details for the file swarmauri_certs_azure-0.3.3.dev21-py3-none-any.whl.
File metadata
- Download URL: swarmauri_certs_azure-0.3.3.dev21-py3-none-any.whl
- Upload date:
- Size: 9.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d905db1ca1ceabfb94743637bae6a00a1704deb9a4ff74c40dc1b19f10370c30
|
|
| MD5 |
ee6ac4ec1aa26c39779c62bf9a853d36
|
|
| BLAKE2b-256 |
2f5cc3dfa84546c8ae088ce0449b986b31c918472173667b1fb5d9b058115483
|