mirror of
https://github.com/rkivalin/certforge.git
synced 2026-10-12 16:00:45 +00:00
Support key_mode, key_owner, key_group and cert_mode, cert_owner, cert_group per certificate. Mode is an octal string (e.g. "0640"), owner/group are resolved by name via getpwnam/getgrnam. Permissions are checked before applying — system calls are only made when the current state differs from the desired state, and changes are logged. Runs on every renew for existing files, not just when certificates are renewed. Defaults: key 0600, cert 0644, owner/group unchanged. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
72 lines
1.8 KiB
TOML
72 lines
1.8 KiB
TOML
[package]
|
|
name = "certforge"
|
|
version = "0.7.0"
|
|
edition = "2024"
|
|
|
|
[profile.release]
|
|
lto = true # link-time optimization — enables cross-crate dead code elimination
|
|
codegen-units = 1 # single codegen unit — better optimization at cost of compile time
|
|
strip = true # strip debug symbols and metadata
|
|
panic = "abort" # no unwinding machinery — smaller binary, simpler code
|
|
|
|
[dependencies]
|
|
# ACME
|
|
instant-acme = { version = "0.8", default-features = false, features = ["hyper-rustls", "ring"] }
|
|
|
|
# DNS
|
|
hickory-proto = { version = "0.25", features = ["dnssec-ring"] }
|
|
hickory-client = { version = "0.25", features = ["dnssec-ring"] }
|
|
|
|
# Crypto / Certificates
|
|
rcgen = "0.13"
|
|
ring = "0.17"
|
|
x509-parser = "0.16"
|
|
pem = "3"
|
|
sha2 = "0.10"
|
|
base64 = "0.22"
|
|
hex = "0.4"
|
|
rustls-pki-types = "1"
|
|
|
|
# Async
|
|
tokio = { version = "1", features = ["macros", "rt-multi-thread", "net", "time", "process", "io-util"] }
|
|
futures-core = "0.3"
|
|
|
|
# CLI
|
|
clap = { version = "4", features = ["derive"] }
|
|
|
|
# Config
|
|
serde = { version = "1", features = ["derive"] }
|
|
toml = "0.8"
|
|
|
|
# Logging
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
|
|
# Error handling
|
|
thiserror = "2"
|
|
anyhow = "1"
|
|
|
|
# Time
|
|
chrono = { version = "0.4", default-features = false, features = ["clock", "serde"] }
|
|
|
|
# State persistence
|
|
serde_json = "1"
|
|
|
|
# HTTP server (for HTTP-01 solver)
|
|
hyper = { version = "1", features = ["http1", "server"] }
|
|
hyper-util = { version = "0.1", features = ["tokio"] }
|
|
http-body-util = "0.1"
|
|
|
|
# TLS (for TLS-ALPN-01 solver)
|
|
tokio-rustls = { version = "0.26", default-features = false, features = ["ring"] }
|
|
rustls = { version = "0.23", default-features = false, features = ["ring", "std"] }
|
|
|
|
# Trait async support
|
|
async-trait = "0.1"
|
|
|
|
# Unix permissions
|
|
libc = "0.2"
|
|
|
|
# systemd D-Bus
|
|
zbus = "5"
|