news 2026/9/14 6:13:16

如何生成 Authelia 的 ML-DSA 后量子密钥与证书

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何生成 Authelia 的 ML-DSA 后量子密钥与证书

如何生成 Authelia 的 ML-DSA 后量子密钥与证书

【免费下载链接】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 mldsa generate子命令,用于一次性生成 ML-DSA 私钥和证书,无需依赖 openssl 等外部工具。文章基于 ML-DSA 证书生成命令参考 与生成安全值指南 中的真实命令路径写成,覆盖本机二进制(Bare-Metal)和 Docker 容器两种执行方式,以及自签发、CA 签发和生成 CSR 三条文档明确支持的路径。

按项目文档,Authelia 自 4.39.21(2026 年 9 月 3 日发布)起实现了多项后量子加密措施,包括 WebAuthn 凭据与 OIDC/OAuth 2.0 的 ML-DSA-44、ML-DSA-65、ML-DSA-87 JOSE 签名支持,详见后量子加密概览。本文只讲如何用 CLI 生成 ML-DSA 密钥与证书这一任务本身。

前提条件

  • 本机已安装 Authelia CLI 二进制,或可以使用 Docker 并拉取authelia/authelia:latest镜像。两种执行方式在生成安全值指南中分别称为 Bare-Metal 和 Docker。
  • 生成文件会写入--directory-d)指定的目录;不指定该参数时,命令在参考文档中仅展示了 flag 用法,未说明缺省输出位置,建议显式指定目录,避免生成文件散落。

生成自签名的 ML-DSA 密钥与证书

命令的基本形式(来自命令参考):

authelia crypto certificate mldsa generate [flags]

参考文档明确说明:--path.ca未提供时,证书是自签名的。因此最简单的调用就是指定一个 common name 和输出目录,例如文档示例中使用的域名example.com(请替换为你自己的值):

authelia crypto certificate mldsa generate --common-name example.com --directory ./keys

如果不带任何参数只想了解用法,运行参考文档给出的示例:

authelia crypto certificate mldsa generate --help

Docker 方式执行

生成安全值指南中 RSA 证书生成的 Docker 命令为把当前目录挂载到容器/keys再运行authelia crypto certificate rsa generate;ML-DSA 的generate命令拥有完全相同的--common-name--directory选项,按同一模式执行:

docker run --rm -u "$(id -u):$(id -g)" -v "$(pwd)":/keys authelia/authelia:latest authelia crypto certificate mldsa generate --common-name example.com --directory /keys

副作用说明:该命令会启动一个临时容器,--rm使容器退出后自动删除;-v "$(pwd)":/keys会把当前工作目录挂载进容器,生成的文件最终落在你的当前目录中。-u "$(id -u):$(id -g)"让容器以你当前的用户身份写文件,避免产生 root 属主的输出。

选择 ML-DSA 参数集与有效期

ML-DSA 算法有三个参数集,通过-b, --parameters指定,可选值与默认值以命令参考为准:

flag可选值默认值用途
-b, --parametersML-DSA-44ML-DSA-65ML-DSA-87ML-DSA-65设置 ML-DSA 参数集
--duration1y证书有效期时长
--signatureSHA256证书签名算法
--not-before/--not-after多种日期格式不指定时为 now / 由 duration 决定证书有效期的最早与最晚时间
--sanssubject alternative names
-n, --common-name证书 common name
--country--province-l, --locality-s, --street-address-p, --postcode-o, --organization--organizational-unitorganization 默认[Authelia]证书主体地址字段

例如指定参数集并延长有效期:

authelia crypto certificate mldsa generate --common-name example.com --parameters ML-DSA-65 --duration 2y --directory ./keys

关于 ML-DSA-44 / 65 / 87 三个参数集之间如何选择,命令参考只列出三个可选值与默认值ML-DSA-65,没有给出选型建议;后量子概览文档同样只说明项目支持这三个参数集,未对三者做对比,因此按文档事实保留默认值或自行决定即可。

输出文件与改名

按命令参考中的默认文件名,生成结果写入输出目录:

文件说明对应 flag
private.pem私钥数据--file.private-key
public.crt证书数据--file.certificate
public.chain.pem证书链 PEM bundle(仅当--bundles包含chain--file.bundle.chain
private.chain.pem证书链与私钥 PEM bundle(仅当--bundles包含priv-chain--file.bundle.priv-chain

需要改名时用对应的--file.*flag 指定;需要额外输出 bundle 时用--bundles,可选值参考文档写的是'chain''priv-chain'。另外--legacy开启后会在 PKCS#1 和 SECG1 旧格式输出中生效,--file.extension.legacy控制该旧格式的子扩展名(默认legacy)。

可选:使用已有 CA 签发

如果不想自签名,命令参考说明--path.ca指向 CA 文件所在目录,未提供该参数时证书自签。CA 的证书与私钥默认读取ca.public.crtca.private.pem(分别可由--file.ca-certificate--file.ca-private-key改名)。

按文档给出的 flag 语义,一个可用的组合是先用--ca生成一张 CA 证书(参考文档说明--ca表示“create the certificate as a certificate authority certificate”),再把--path.ca指向该 CA 所在目录:

# 生成 CA(CA 证书 + CA 私钥) authelia crypto certificate mldsa generate --ca --common-name my-ca --directory ./ca # 用该 CA 签发业务证书 authelia crypto certificate mldsa generate --common-name example.com --path.ca ./ca --directory ./keys

第二条命令假设./ca目录下就是默认文件名ca.public.crtca.private.pem,文件名不同时用--file.ca-certificate/--file.ca-private-key指定实际路径。

可选:为外部 CA 生成 CSR

如果证书要交给外部 CA 签发,使用姊妹命令 authelia crypto certificate mldsa request 生成私钥与证书签名请求:

authelia crypto certificate mldsa request --common-name example.com --directory ./csr

该命令默认输出request.csr(由--file.csr改名)与私钥private.pem,其余证书字段 flag(--parameters--duration--sans、地址字段等)与generate一致。

验证生成结果

参考文档与指南给出的成功判据是输出文件本身:指南在证书一节明确“所有情况下输出文件如下”(private.pem为私钥、public.crt为公钥与证书)。执行完命令后,在输出目录确认这些文件已生成即可:

  • 自签 / CA 签发(generate):private.pempublic.crt,启用--bundles时还有对应的public.chain.pemprivate.chain.pem
  • CSR(request):request.csrprivate.pem

文档没有给出命令成功时的终端输出样例,因此以文件是否落盘为准。

限制说明

  • 三个 ML-DSA 参数集在文档中仅以可选值与默认值(ML-DSA-65)的形式出现,没有强度对比或选型依据,本文不补写结论。
  • generate命令同时接受继承自父命令的-c, --config(默认configuration.yml)等全局参数,本任务仅使用生成相关的 flag,配置参数不影响密钥生成。
  • 本文命令中的example.com取自文档示例,执行前请替换为实际要使用的 common name。

参考文档入口:authelia crypto certificate mldsa generate、authelia crypto certificate mldsa、authelia crypto certificate mldsa request、后量子加密概览、生成安全值指南。

【免费下载链接】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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/14 6:13:11

CloddsBot:基于OpenAPI与规则引擎的云资源自动化巡检实践

1. 为什么会有 CloddsBot:从“看板疲劳”到自动化值守 先交代一个背景:我手上同时维护着几个不同云厂商的账号,加起来有几十台云主机、数据库实例、负载均衡、对象存储桶。每天早上开工第一件事,就是挨个登录控制台,刷…

作者头像 李华
网站建设 2026/9/14 6:12:37

MEEMD程序详解:从EEMD到排列熵的MATLAB实现与参数调优

简介:MEEMD(改进集合经验模态分解)与EEMD的MATLAB源码包,面向信号处理、故障诊断等领域的科研人员与工程师,用于解决非线性、非平稳信号的分解与特征提取问题,适用于课程设计、论文复现和工程预研。资源采用…

作者头像 李华
网站建设 2026/9/14 6:12:08

yuzu Switch 模拟器入门指南:从安装到调优快速跑通

yuzu Switch 模拟器入门指南:从安装到调优快速跑通 【免费下载链接】yuzu 任天堂 Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu yuzu 是一个用 C 编写的开源任天堂 Switch 模拟器,支持 Windows、Linux、Android 三大平台…

作者头像 李华
网站建设 2026/9/14 6:09:24

软件实时性本质:时间确定性与可验证边界

1. 这个问题不是哲学思辨,而是每天都在发生的工程现场“快是优点么?”——当这句话出现在软件实时性讨论里,它根本不是一句抽象的反问,而是一线工程师在凌晨三点盯着监控面板、手悬在重启按钮上方时的真实心跳。我做过工业控制系统…

作者头像 李华
网站建设 2026/9/14 6:09:22

BLE指令驱动语音播报:告别A2DP,实现毫秒级低功耗播报

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华