Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

使用签名密钥以本机方式运行第三方应用程序

签名密钥概述

从 Junos OS 演化版 22.4R1 开始,您可以生成签名密钥并使用它们对可执行文件或共享对象进行签名。对可执行文件进行签名即可授予其在设备上运行的权限,从而允许您批准受信任的应用程序与授权的瞻博网络软件一起运行。

Junos OS 演化版要求用户对所有将映射到内存中执行的文件进行签名。这包括以下文件类型:

  • 可执行和可链接格式 (ELF) 文件

  • 共享对象 (.so) 文件

以下类型的文件不需要签名:

  • 码头工人容器

  • 容器内的应用

  • 脚本

    注意:

    尽管脚本不需要签名,但它们确实需要通过已签名的解释器进行执行。Junos OS Evolved 随附了签名的 Python 2 和 Python 3 解释器,可通过 shell 命令使用 python script-name

签名密钥由名为完整性测量体系结构 (IMA) 的 Linux 子系统控制。IMA 策略包含一些规则,这些规则定义在执行文件之前需要执行哪些操作。IMA 衡量策略将测量和存储文件的哈希值,IMA 评估策略将确保文件具有有效的哈希值或数字签名。仅当此验证成功时,IMA 才允许文件运行。有关 IMA 的详细信息,请参阅 使用 IMA 保护 Junos OS 演化版的完整性

签名密钥存储在 系统密钥库中,用于验证签名密钥的证书存储在 IMA 扩展密钥环中。继续阅读以了解如何生成、导入、查看和使用签名密钥。

生成签名密钥

密钥可以通过 OpenSSL 命令行或 OpenSSL 配置文件生成。

使用 OpenSSL 命令行生成签名密钥

以下示例 OpenSSL 命令可用于生成签名密钥:

此命令将生成 2 个文件:

  1. privkey.pem - 可用于对可执行文件进行签名的 PEM 编码私钥。

  2. ima-cert.x509 - 要加载到 IMA 扩展密钥环中的 DER 编码证书。

注意:

OpenSSL 命令行的功能有限。它不允许您设置 X509v3 扩展的值。使用上述命令生成的所有密钥都可以用作证书颁发机构 (CA),因此可用于签署其他证书。为了防止这种情况,我们可以使用 OpenSSL 配置文件。

使用 OpenSSL 配置文件生成签名密钥

创建一个名为 ima-x509.cnf 的文件并粘贴以下内容:

创建配置文件后,使用以下 OpenSSL 命令创建 ima-privkey.pemima-cert.x509 文件:

私钥文件用于生成签名密钥,证书文件ima-privkey.pemima-cert.x509用于验证签名。在将签名密钥导入系统密钥库和 IMA 扩展密钥环的过程中会使用这两个文件。

将签名密钥导入系统密钥库和 IMA 扩展密钥环

在使用之前,需要将签名密钥导入到系统密钥库中。导入到系统密钥库中的密钥会自动导入到 IMA 扩展密钥环中。密钥将在两个路由引擎上导入。

要将签名密钥导入系统密钥库,请将命令与 request security system-keystore import 以下 2 个必需参数一起使用:

  1. key-name - 密钥的唯一名称

  2. x509-cert - DER 编码证书文件的路径

以下示例命令将使用证书文件ima-cert.x509创建名为ima-test-key的密钥:

将密钥成功导入 system-keystore 后,您将看到上述输出,其中显示了密钥的名称、磁盘上证书的路径以及密钥的主题密钥标识符 (SKI)。您可以使用以下命令检查此 SKI 是否与加载到 IMA 扩展密钥环中的密钥匹配:

查看系统密钥库和 IMA 扩展密钥环

您可以通过 Junos OS 演进版 CLI show 命令查看系统密钥库和 IMA 扩展密钥环的内容。

使用 show security integrity system-keystore 命令查看系统密钥库中的可用签名密钥:

密钥 SKI 字段中的信息可用于将这些密钥映射到 IMA 扩展密钥环。

使用 show security integrity extended-keyring 命令查看 IMA 扩展密钥环的内容:

如何签署应用程序

将签名密钥导入系统密钥库后,可以使用该密钥对可执行二进制文件进行签名。

使用该 request security integrity measure file filename key key-name 命令对文件进行签名。

以下示例命令显示名为 ima-test 的文件由名为 的 ima-test-key密钥签名:

您可以使用命令 request security integrity appraise file filename key key-name 验证文件是否已成功签名,如下所示:

如果文件未正确签名,将显示以下消息:

对文件进行签名后,即可在 Junos OS 演化版设备上以本机方式运行。