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.
Metadata
Release files for swarmauri_certs_azure 0.3.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 | |
|---|---|---|---|
| swarmauri_certs_azure-0.3.3.tar.gz | 8.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| swarmauri_certs_azure-0.3.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.6 kB
Release files / swarmauri_certs_azure-0.3.3.tar.gz
| Download URL | swarmauri_certs_azure-0.3.3.tar.gz |
|---|---|
| Size | 8.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e7c3355e817b1d5c28124cbcd4042c13c25542009074a9e36d8674208404824e
|
|
BLAKE2b-256 checksum How to use checksums |
b6f32bc213bc8853d6b2e7e1034cf42f1af34bf07006fbd624f5775963180edf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.0 {"installer":{"name":"uv","version":"0.11.0","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}
|
Release files / swarmauri_certs_azure-0.3.3-py3-none-any.whl
| Download URL | swarmauri_certs_azure-0.3.3-py3-none-any.whl |
|---|---|
| Size | 9.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
62ae028e69595c397f08abfcbdd2720684cdc449afc769d6e3c3ae08a03fa74e
|
|
BLAKE2b-256 checksum How to use checksums |
d1871f012e6aabd9198def26461c0b4f26cfe4d65768bad5b6d101f5608bb21c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.0 {"installer":{"name":"uv","version":"0.11.0","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}
|