[package]
edition = "2024"
name = "certmagic"
version = "0.2.0"
build = false
exclude = [
"docs/",
".github/",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Automatic TLS certificate acquisition, renewal, and maintenance for Rust servers"
homepage = "https://github.com/houseme/certmagic"
documentation = "https://docs.rs/certmagic"
readme = "README.md"
keywords = [
"tls",
"acme",
"letsencrypt",
"https",
"certificate",
]
categories = [
"network-programming",
"cryptography",
"asynchronous",
]
license = "Apache-2.0"
repository = "https://github.com/houseme/certmagic"
[package.metadata.docs.rs]
all-features = true
targets = ["x86_64-unknown-linux-gnu"]
[features]
aws-lc-rs = [
"dep:aws-lc-rs",
"aws-smithy-http-client?/rustls-aws-lc",
"etcd-client?/tls-aws-lc",
"rustls/aws_lc_rs",
"tokio-rustls/aws_lc_rs",
"rcgen/aws_lc_rs",
"reqwest/rustls",
"x509-parser/verify-aws",
]
default = [
"aws-lc-rs",
"zerossl",
"file-storage",
"http-01",
"dns-01",
"ocsp",
]
dns-01 = ["dep:hickory-resolver"]
etcd-storage = ["dep:etcd-client"]
file-storage = []
http-01 = []
integration-tests = []
local-cache = []
ocsp = []
redis-storage = ["dep:redis"]
remote-cert-store = []
ring = [
"dep:ring",
"aws-smithy-http-client?/rustls-ring",
"etcd-client?/tls-ring",
"rustls/ring",
"tokio-rustls/ring",
"rcgen/ring",
"reqwest/rustls-no-provider",
"x509-parser/verify",
]
rsa = [
"dep:rsa",
"aws-lc-rs",
"rcgen/aws_lc_rs",
]
s3-cert-store = [
"remote-cert-store",
"dep:aws-sdk-s3",
"dep:aws-smithy-http-client",
]
secrets-manager-cert-store = [
"remote-cert-store",
"dep:aws-sdk-secretsmanager",
"dep:aws-smithy-http-client",
]
vault-cert-store = ["remote-cert-store"]
zerossl = []
[lib]
name = "certmagic"
path = "src/lib.rs"
[[example]]
name = "basic_https"
path = "examples/basic_https.rs"
[[example]]
name = "custom_dns01"
path = "examples/custom_dns01.rs"
[[example]]
name = "etcd_storage"
path = "examples/etcd_storage.rs"
required-features = ["etcd-storage"]
[[example]]
name = "manager_compat"
path = "examples/manager_compat.rs"
[[example]]
name = "on_demand"
path = "examples/on_demand.rs"
[[example]]
name = "redis_storage"
path = "examples/redis_storage.rs"
required-features = ["redis-storage"]
[[example]]
name = "s3_cert_store"
path = "examples/s3_cert_store.rs"
required-features = [
"s3-cert-store",
"etcd-storage",
]
[[example]]
name = "secrets_manager_cert_store"
path = "examples/secrets_manager_cert_store.rs"
required-features = [
"secrets-manager-cert-store",
"etcd-storage",
]
[[example]]
name = "vault_cert_store"
path = "examples/vault_cert_store.rs"
required-features = [
"vault-cert-store",
"etcd-storage",
]
[[test]]
name = "api_aliases"
path = "tests/api_aliases.rs"
[[test]]
name = "cert_store_separation"
path = "tests/cert_store_separation.rs"
[[test]]
name = "config_api_compat"
path = "tests/config_api_compat.rs"
[[test]]
name = "custom_locker"
path = "tests/custom_locker.rs"
[[test]]
name = "etcd_storage"
path = "tests/etcd_storage.rs"
[[test]]
name = "external_zerossl"
path = "tests/external_zerossl.rs"
[[test]]
name = "integration"
path = "tests/integration.rs"
[[test]]
name = "loopback_challenges"
path = "tests/loopback_challenges.rs"
[[test]]
name = "redis_storage"
path = "tests/redis_storage.rs"
[[test]]
name = "remote_cert_store"
path = "tests/remote_cert_store.rs"
[[test]]
name = "resolver_behavior"
path = "tests/resolver_behavior.rs"
[[test]]
name = "s3_cert_store"
path = "tests/s3_cert_store.rs"
[[test]]
name = "secrets_manager_cert_store"
path = "tests/secrets_manager_cert_store.rs"
[[test]]
name = "solver_api_compat"
path = "tests/solver_api_compat.rs"
[[test]]
name = "vault_cert_store"
path = "tests/vault_cert_store.rs"
[[test]]
name = "zerossl_api_mock"
path = "tests/zerossl_api_mock.rs"
[[bench]]
name = "cache_paths"
path = "benches/cache_paths.rs"
harness = false
required-features = ["local-cache"]
[[bench]]
name = "remote_cert_store"
path = "benches/remote_cert_store.rs"
harness = false
required-features = ["remote-cert-store"]
[dependencies.async-trait]
version = "0.1.92"
[dependencies.aws-lc-rs]
version = "1.18.1"
optional = true
[dependencies.aws-sdk-s3]
version = "1.152.0"
features = ["rt-tokio"]
optional = true
default-features = false
[dependencies.aws-sdk-secretsmanager]
version = "1.120.0"
features = ["rt-tokio"]
optional = true
default-features = false
[dependencies.aws-smithy-http-client]
version = "1.5.0"
features = ["rt-tokio"]
optional = true
default-features = false
[dependencies.base64]
version = "0.23.1"
[dependencies.etcd-client]
version = "0.21.0"
features = ["tls-webpki-roots"]
optional = true
default-features = false
[dependencies.futures]
version = "0.3.34"
[dependencies.hex]
version = "0.4.3"
[dependencies.hickory-resolver]
version = "0.26.3"
optional = true
[dependencies.idna]
version = "1.1.0"
[dependencies.p521]
version = "0.14.0"
features = ["ecdsa"]
[dependencies.rand]
version = "0.10.3"
[dependencies.rcgen]
version = "0.14.10"
features = [
"crypto",
"pem",
]
default-features = false
[dependencies.redis]
version = "1.7.1"
features = [
"tokio-rustls-comp",
"tls-rustls-webpki-roots",
"connection-manager",
]
optional = true
default-features = false
[dependencies.reqwest]
version = "0.13.5"
features = [
"form",
"http2",
"json",
]
default-features = false
[dependencies.ring]
version = "0.17.14"
optional = true
[dependencies.rsa]
version = "0.10.0-rc.19"
features = [
"sha2",
"getrandom",
]
optional = true
[dependencies.rustls]
version = "0.23.45"
features = [
"std",
"tls12",
]
default-features = false
[dependencies.rustls-pki-types]
version = "1.15.1"
[dependencies.serde]
version = "1.0.229"
features = ["derive"]
[dependencies.serde_json]
version = "1.0.152"
[dependencies.sha1]
version = "0.11.0"
[dependencies.sha2]
version = "0.11.0"
[dependencies.thiserror]
version = "2.0.21"
[dependencies.time]
version = "0.3.55"
features = [
"formatting",
"parsing",
"serde",
"std",
]
[dependencies.tokio]
version = "1.53.2"
features = [
"rt-multi-thread",
"macros",
"net",
"time",
"sync",
"fs",
"io-util",
"signal",
]
[dependencies.tokio-rustls]
version = "0.26.6"
features = ["tls12"]
default-features = false
[dependencies.tokio-util]
version = "0.7.20"
features = ["rt"]
[dependencies.tracing]
version = "0.1.44"
[dependencies.url]
version = "2.5.8"
[dependencies.x509-parser]
version = "0.18.1"
[dev-dependencies.tempfile]
version = "3.27.0"
[dev-dependencies.tokio]
version = "1.53.2"
features = ["test-util"]
[lints.clippy]
all = "warn"
dbg_macro = "warn"
[lints.rust]
missing_debug_implementations = "warn"
unsafe_code = "forbid"
[profile.dev]
opt-level = 0
debug = 1
[profile.release]
lto = "thin"
codegen-units = 1
strip = "debuginfo"