EasyRSA-Advanced v3.08 中文译本 

Last Update: 2023-05-18

目录

译者总注

关于此译本

李守中是开源软件理念坚定的支持者,所以译本虽不是软件,但依旧仿照开源软件的协议发布:

如果读者发现作品中有错误的地方,劳请来信指出。任何提高作品质量的建议李守中都将虚心接纳。

原文档来源

下载 Easy-RSA v3.08 Release 压缩包,解压后在 doc 目录下即可获取全部项目文档。

根据 EasyRSA v3.08 EasyRSA-Advanced 文档翻译而来。

译者的话

李守中在翻译 EasyRSA v3 系列文档的过程中发现,很多句子对于程序行为的描述有些模糊。

所以,李守中将不加提示地根据软件行为意译原文档中多数的句子;对于意译困难的句子,李守中会加入以 译者注 为开始标记的文本来帮助读者理解;对于意译之后依旧无法准确描述目标行为的句子,李守中将不加提示地扩充文档的内容。

有能力的读者可以从此链接 easyrsa_v3.08_doc.zip 下载英文原文与本文做对照。


这是一个为熟悉 PKI 流程的高级用户编写的技术参考文档。如果需要更详细的说明,请参阅 EasyRSA-Readme v3.08 中文译本EasyRSA Intro-To-PKI v3.08 中文译本 文档。

配置参考 (Configuration Reference)

配置源 (Configuration Sources)

有 3 种方法可以配置 Easy-RSA 的行为,配置的优先级按以下列表排序 (低优先级的配置不会覆盖高优先级的配置):

  1. 命令行选项。
  2. 环境变量。
  3. 名为 vars 的文件 (如果存在的话)。 (参阅下面的 自动探测 vars)
  4. 内置的默认值。

请注意,尽管任何环境变量都可以在 vars 文件中被定义和赋值 (即使这个环境变量并没有默认地被写在 vars 文件里),但并非所有的选项都可以在列表提到的地方进行配置。

自动探测 vars (vars Autodetection)

Easy-RSA 所要读取配置的 vars 文件的名称就是 vars ,不带任何的拓展名。写在这个文件中的变量值不会覆盖写在更高优先级的变量值,比如,vars 文件中的变量值不会覆盖配置在环境变量中的值,配置在环境变量中的值不会覆盖在命令行中配置的值。

vars 文件的查找顺序如下,最先找到的会被使用:

  1. 在命令行使用 --vars 指定 vars 文件路径。
  2. 在环境变量中定义 EASYRSA_VARS_FILE 变量,这个变量里存储了 vars 文件的路径。
  3. 在环境变量中定义 EASYRSA_PKI 变量,这个变量里存储了 PKI 文件夹的路径。在 PKI 文件夹中找 vars 文件。
  4. 在默认的 PKI 文件夹路径 $PWD/pki 下找 vars 文件。
  5. 在环境变量中定义 EASYRSA 变量,这个变量里存储了 Easy-RSA 的根路径,easyrsa 脚本文件就位于这个路径下。也就是在和 easyrsa 可执行脚本文件同级的路径中找 vars 文件。
  6. 在包含 Easy-RSA 程序的文件夹中找 vars 文件。

如果环境变量中存在 EASYRSA_NO_VARS 变量,将在所有情况下覆盖 VARS 文件的源,包括随后将其定义为全局选项。 译者注: 作者想说的是,只要设置了 EASYRSA_NO_VARS 环境变量,Easy-RSA 就不会从任何地方找这个 vars 文件,包括命令行中的 --vars 选项也不生效。经实测,如果只执行了 export EASYRSA_NO_VARS 而没有赋值,那么相当于没设这个环境变量。但随便给个什么值 export EASYRSA_NO_VARS=blablabla 都会让这个环境变量生效。

OpenSSL 配置 (OpenSSL Config)

Easy-RSA 与 OpenSSL 配置文件 (.cnf) 紧密耦合来给脚本提供灵活性。这就要求 OpenSSL 的配置文件能被 Easy-RSA 读取,但也可以为特定的 PKI 使用不同的 OpenSSL 配置文件,甚至可以在调用 Easy-RSA 的时候指定其他的 OpenSSL 配置文件。

Easy-RSA 将用以下方法检索 OpenSSL 配置文件:

  1. 从环境变量 EASYRSA_SSL_CONF 中直接读出 OpenSSL 配置文件的路径。
  2. 从 vars 文件中读取配置。 译者注: vars 文件中的 EASYRSA_SSL_CONF 变量存储了 OpenSSL 配置文件的路径。
  3. 从环境变量 EASYRSA_PKI 存储的 pki 文件夹中寻找文件名为 openssl-easyrsa.cnf 的文件作为 OpenSSL 的配置文件。
  4. 从环境变量 EASYRSA 存储的 Easy-RSA 根路径下寻找名为 openssl-easyrsa.cnf 的文件作为 OpenSSL 的配置文件。

高级拓展处理 (Advanced extension handling)

通常,证书的扩展段的内容取决于签名期间 CLI 中给定的证书类型。 译者注: CLI 给定的证书类型必须是 x509-types 文件夹中存在的类型。 然后 Easy-RSA 会根据指定的类型到 x509-types 目录中找预定义的类型文件,根据文件中的字段配置添加对应的 OpenSSL 扩展。在 PKI 目录 (EASYRSA_PKI) 中建立一个 x509-types 文件夹可以覆盖 Easy-RSA 根目录下的 x509-types 文件夹。 译者注: 这样,这个 PKI 以后都从 PKI 目录下的 x509-types 文件夹中读取扩展信息。

x509-types 目录中名为 COMMON 的文件会被添加到每个证书中。这这文件是为使用 CDP 而设计的,但也可以通过这个文件添加任意扩展到每个被签出的证书中。 译者注: CDP (CRL Distribution Point), CLR (Certificate Revocation List)。CDP 是数字证书中的信息,它描述了如何获取证书的 CRL 列表。

此外,环境变量 EASYRSA_EXTRA_EXTS 中的内容会被添加到 OpenSSL 扩展中的原始文本里。环境变量的内容会按原样附加到证书扩展中。无效的 OpenSSL 配置会导致 easyrsa 执行失败。

环境变量手册 (Environmental Variables Reference)

下面显示了环境变量列表;和环境变量有同样效果的,比环境变量优先级更高的命令行选项;以及简短的描述:

注意: 需要在实际命令之前提供全局选项。 译者注: easyrsa 命令的格式是 easyrsa [options] COMMAND [command-options] 。作者是想说,列表中,括号里的命令行选项必须放在 COMMAND 部分之前。即,括号中的命令行选项是 options 段中的内容。