
Authelia CLI 实战使用authelia crypto certificate ed25519 generate生成 Ed25519 证书【免费下载链接】autheliaThe Single Sign-On Multi-Factor portal for web apps. OpenID Certified™ and Post-Quantum Cryptography Ready.项目地址: https://gitcode.com/GitHub_Trending/au/authelia本指南围绕 Authelia 的authelia crypto certificate ed25519 generate子命令展开完整讲解如何通过一行命令生成 Ed25519 私钥与 X.509 证书包括全部命令行参数的用途与默认值、自签名 / CA 签发两种模式、SAN 与有效期配置、证书链捆绑导出等实战场景并结合仓库源码剖析其底层实现密钥生成、证书模板构建、有效期解析与文件落盘帮助你直接把它用于 Authelia 的 TLS 配置、测试环境证书签发或运维自动化脚本。命令在 CLI 树中的位置authelia crypto certificate ed25519 generate是 Authelia 内置加密工具箱authelia crypto的深层子命令其完整命令层级为authelia └── crypto └── certificate ├── rsa ├── ecdsa ├── ed25519 │ ├── generate ← 本文主角 │ └── request └── mldsa从源码看crypto.go 中的newCryptoCertificateCmd依次注册了 RSA、ECDSA、Ed25519、ML-DSA 四个算法子组而每个算法子组下又挂载generate直接生成私钥 证书与request生成私钥 CSR两个子命令分别对应 newCryptoGenerateCmd 与newCryptoCertificateRequestCmd。命令语法Synopsisauthelia crypto certificate ed25519 generate [flags]该子命令不接受位置参数源码中通过Args: cobra.NoArgs约束所有行为均由 flags 控制。它做的事情是生成一对 Ed25519 密钥基于你提供的主题信息Subject与有效期构建 X.509 证书模板然后根据是否指定 CA 决定自签名或用 CA 私钥签发最后把私钥与证书以 PEM 格式写入磁盘。完整参数说明主题与证书信息Subject 相关Flag简写类型默认值说明--common-name-nstring空证书通用名称CN--organization-ostrings[Authelia]证书组织O可重复指定多个--organizational-unit—strings空证书组织单元OU--country—strings空证书国家C建议使用 ISO 3166 两字母国家码--province—strings空证书省份/州ST--locality-lstrings空证书城市L--street-address-sstrings空证书街道地址--postcode-pstrings空证书邮政编码--sans—strings空主题备用名称SAN可混合 DNS 名与 IP 地址--extended-usage—strings空证书扩展密钥用法详见下文取值--signature—stringSHA256证书签名算法--ca—boolfalse生成证书颁发机构CA证书这些 flags 在源码 crypto_helper.go 的cmdFlagsCryptoCertificateCommon与cmdFlagsCryptoCertificateGenerate中注册最终由cryptoGetSubjectFromCmd组装成pkix.Name结构写入证书 Subject。有效期相关Flag类型默认值说明--durationstring1y证书有效时长默认 1 年--not-beforestring当前时间证书最早有效时间--not-afterstring空证书最晚有效时间有效期解析逻辑位于 crypto_helper.go 的cryptoCertificateValidityFromCmd--not-before未指定时取time.Now()若指定了--not-after则不得同时指定--duration二者互斥否则直接报错。时长字符串支持 Go 标准时长如720h以及更人性化的写法——internal/utils/time.go 中的ParseDurationString会先把1y、1M、1w、1d、and连接的复合写法如1y6M标准化为小时再交给time.ParseDuration解析。--not-before/--not-after则支持多种时间格式RFC3339、Unix 时间戳秒/毫秒/微秒等由ParseTimeString自动匹配。签发方式CA 相关Flag类型默认值说明--path.castring空CA 文件所在目录不指定时证书将自签名--file.ca-certificatestringca.public.crt用于签发本证书的 CA 证书文件名--file.ca-private-keystringca.private.pem用于签发本证书的 CA 私钥文件名指定--path.ca后源码cryptoGetCAFromCmd会从该目录读取--file.ca-private-key与--file.ca-certificate指定的文件解析出 CA 私钥与证书签发时以 CA 私钥作为签名密钥signatureKey caPrivateKey生成的证书以 CA 证书为父证书。若同时设置了--ca输出文件将自动切换为ca.private.pem/ca.public.crt见cryptoGetWritePathsFromCmd的分支逻辑。输出文件相关Flag类型默认值说明--directory-dstring空生成文件的存放目录--file.private-keystringprivate.pem私钥导出文件名--file.certificatestringpublic.crt证书导出文件名--bundlesstrings空启用捆绑导出可选值chain与priv-chain--file.bundle.chainstringpublic.chain.pemchain捆绑文件证书 CA 证书链--file.bundle.priv-chainstringprivate.chain.pempriv-chain捆绑文件私钥 证书链--legacyboolfalse同时输出 PKCS#1 / SECG1 旧格式--file.extension.legacystringlegacy旧格式文件的子扩展名关于--legacy需要特别注意PKCS#1 / SECG1 旧格式仅适用于 RSA 与 ECDSA 私钥。在源码cryptoKeyProperties中Ed25519 私钥类型返回的legacy标志恒为false因此对 Ed25519 而言--legacy实际不会产生额外的旧格式文件——Ed25519 私钥只以 PKCS#8 形式输出。--bundles的具体行为见下文示例与源码解析。继承自父命令的参数-c, --config strings 配置文件或目录更多信息运行 authelia -h authelia config默认 [configuration.yml] --config.experimental.filters strings 应用到所有配置文件的过滤器列表generate本身不读取这些配置项但作为authelia全局命令树的一员会继承它们。实战示例1. 生成一张自签名 Ed25519 服务器证书authelia crypto certificate ed25519 generate \ --directory ./certs \ --common-name authelia.example.com \ --sans authelia.example.com,192.168.1.10 \ --duration 1y执行后会在./certs目录下生成private.pemEd25519 私钥与public.crt自签名证书有效期 1 年SAN 同时包含域名与 IP源码cryptoGetSANsFromCmd会用net.ParseIP自动区分 DNS 与 IP SAN。2. 生成并签发一张 CA 证书authelia crypto certificate ed25519 generate \ --directory ./ca \ --common-name Authelia Test CA \ --ca \ --duration 10y--ca让证书成为 CA 证书输出文件切换为ca.private.pem与ca.public.crtKeyUsage 会自动附加CertSign见 internal/utils/crypto.go 的X509ParseKeyUsage。3. 用已存在的 CA 签发服务器证书authelia crypto certificate ed25519 generate \ --directory ./certs \ --path.ca ./ca \ --common-name authelia.example.com \ --sans authelia.example.com \ --duration 1y \ --bundles chain,priv-chain--path.ca ./ca会让命令读取./ca/ca.private.pem与./ca/ca.public.crt完成签发。--bundles chain,priv-chain额外生成public.chain.pem本证书 CA 证书拼接的 PEM 链private.chain.pem私钥 证书链按私钥在前的顺序拼接方便直接配置到需要同时提供私钥与链的服务器。4. 指定扩展密钥用法authelia crypto certificate ed25519 generate \ --directory ./certs \ --common-name client.example.com \ --extended-usage clientauth,serverauth--extended-usage支持serverauth、clientauth、codesigning、emailprotection、ipsecendsystem、ipsectunnel、ipsecuser、ocspsigning、any等取值源码X509ParseExtendedKeyUsage逐项映射到x509.ExtKeyUsage。未指定时默认仅为serverauth若同时设置了--ca则默认为空Any。底层实现解析密钥生成Ed25519 密钥对通过 Go 标准库生成见 crypto_helper.go 的cryptoGenPrivateKeyFromCmdcase cmdUseEd25519: if _, privateKey, err ed25519.GenerateKey(ctx.providers.Random); err ! nil { return nil, fmt.Errorf(generating Ed25519 private key resulted in an error: %w, err) }随机源使用 Authelia 的加密安全随机提供器ctx.providers.Random而非默认的数学随机源保证密钥熵质量。证书模板构建cryptoGetCertificateFromCmd负责组装x509.Certificate模板序列号由随机提供器在 128 位范围内生成NotBefore/NotAfter由有效期逻辑计算KeyUsage 与 ExtKeyUsage 通过 internal/utils/crypto.go 的解析函数生成最终调用x509.CreateCertificate(ctx.providers.Random, template, parent, publicKey, signatureKey)完成签名parent为自签模板或 CA 证书。生成过程输出命令执行时会向终端打印生成摘要包含证书序列号、签发方Self-Signed或 CA 的 CN/序列号/过期时间、Subject 全部字段、Not Before / Not After、CA 标志、签名与公钥算法、SAN 列表以及各输出文件路径——方便你在落盘前核对证书内容。测试验证仓库测试 crypto_test.go 中包含ShouldSucceedCertificateEd25519、ShouldSucceedPairEd25519、ShouldSucceedEd25519等多组用例覆盖 Ed25519 证书生成、密钥对生成、CSR 请求以及certificate/pair两条命令路径并对输出内容断言包含Ed25519字样可作为理解该命令行为与自行验证的参考。相关命令authelia crypto certificate ed25519Ed25519 证书操作总入口authelia crypto certificate ed25519 request生成 Ed25519 私钥与证书签名请求CSR适合需要外部 CA 签发的场景authelia crypto certificate证书操作总入口含 RSA、ECDSA、ML-DSA 等算法变体authelia crypto加密操作顶层命令还包括rand、hash、pair等工具使用提示Ed25519 密钥固定 256 位安全强度无需--bits参数该参数仅存在于 RSA 子命令生成的证书默认仅包含serverauth扩展用法用于客户端认证时请显式指定--extended-usage clientauth--not-after与--duration互斥不要同时指定私钥文件权限与存放位置请自行妥善管理命令本身不会限制输出文件的权限位该命令适合在测试环境或自动化脚本中快速签发证书生产环境的正式 PKI 流程建议结合request子命令生成 CSR 交由专业 CA 签发。【免费下载链接】autheliaThe Single Sign-On Multi-Factor portal for web apps. OpenID Certified™ and Post-Quantum Cryptography Ready.项目地址: https://gitcode.com/GitHub_Trending/au/authelia创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考