那个教程用的是哪种 Easy-RSA 包布局?
期待 vars 或 build-key 的教程描述的是 Easy-RSA 2。复制任何内容前,先确认已安装的版本世代和 PKI 工作区。
教程让你编辑 Easy-RSA 目录里的 vars,而你机器上的这个目录里没有这个文件。这通常是世代不匹配,而不是软件包损坏。Easy-RSA 2 在 build-key 这类 shell 辅助脚本旁保留一个 vars 文件;Easy-RSA 3 只提供一个 easyrsa 命令,并从模板和命令行选项读取配置。从指南里复制任何东西之前,先弄清你装的是哪一代。
请按顺序执行这些检查,因为每一项都会缩小下一项的范围。
1. 盘点已安装的内容
在 Debian 系系统上,问包管理器它实际登记了哪些文件:
dpkg-query -L easy-rsa当前 Debian 软件包的文件列表包含 make-cadir、easyrsa 程序、一个 OpenSSL 配置模板和 vars.example。这能告诉你这个发行版提供了什么。它不能告诉你另一个发行版或上游 tar 归档如何摆放同一代文件,所以在解读路径之前先读版本。如果输出里根本没有 make-cadir,你看到的很可能是另一种打包世代,而不是装坏了。
easyrsa --version 是弄清自己在读哪一代的最短路径,值得在指南的任何其他命令之前先运行它。
2. 区分第 2 代与第 3 代
第 2 代随包提供 shell 辅助脚本和一个需要你编辑的 vars 文件。第 3 代提供带子命令的单个 easyrsa 命令,并从模板和显式选项读取配置。
这一差别解释了该主题下大多数“找不到文件”的报告。为第 2 代写的指南让你执行 source vars 和 build-key,而第 3 代的安装里两者都没有。照着另一台机器的副本去追缺失的文件,正是人们最终在一个 PKI 目录上跑两代程序的原因。
3. 把程序目录和 PKI 工作区分开
安装的程序目录按设计是只读的。你的 PKI 是另一个目录,存放 CA、已签发的证书和私钥,需要正确设置的权限在它身上。
如果已经存在某个机构,找到它的公开证书并确认其状态,然后再动手。不要初始化替代品,也不要因为某个教程用了别的路径就覆盖索引。复制公开模板是无害的,复制签发者的私钥则不是,而在 shell 里这两个操作看起来几乎一样。
4. 追路径之前先检查引号
从排版页面复制来的文本常常带着弯引号。Bash 只把文档中说明的 ASCII 分隔符当作引号,所以被弯引号包住的路径会变成一个并不存在的字面文件名。
printf '%s\n' "$EASY_RSA"这打印的是单个变量的值而不是整个环境,当问题在于值里是否夹带杂字符或空白时,这正是你想要的。不要假设 EASY_RSA 在第 3 代里仍然选择配置;请改用你所装版本文档中给出的 PKI 目录选项。
5. 重新初始化任何东西之前先停下
当程序世代、安装路径和工作区角色对得上时,剩下的错误很可能是权限或状态缺失问题,它值得单独诊断,而不是再找一个绕法。
从另一个发行版安装缓存包、递归复制目录,或创建空的签发者记录,会掩盖原本的不匹配并再加上一个。改动任何东西之前,先记下版本、路径和确切的报错。正是这三样把下一步变成决定而不是又一次猜测,也让下一个人不必重复搜索。