系统管理指南:IP 服务

第 24 章 Internet 密钥交换(参考资料)

本章包含有关 IKE 的以下参考信息:

有关实现 IKE 的说明,请参见第 23 章。有关概述信息,请参见第 22 章

IKE 服务管理工具

svc:/network/ipsec/ike:default 服务—服务管理工具 (service management facility, SMF) 提供 ike 服务以管理 IKE。缺省情况下,此服务处于禁用状态。启用此服务之前,必须创建 IKE 配置文件 /etc/inet/ike/config

以下 ike 服务属性是可配置的:

有 SMF 的信息,请参见《系统管理指南:基本管理》中的第 18  章 “管理服务(概述)”。另请参见 smf(5)svcadm(1M)svccfg(1M) 手册页。

IKE 守护进程

in.iked 守护进程自动管理 Solaris 系统上 IPsec 的加密密钥。该守护进程与运行相同协议的远程系统协商,以便以受保护方式为安全关联 (security association, SA) 提供经过验证的加密材料。必须在计划以安全方式通信的所有系统上运行该守护进程。

缺省情况下,未启用 svc:/network/ipsec/ike:default 服务。配置了 /etc/inet/ike/config 文件并启用 ike 服务后,in.iked 守护进程会在系统引导时运行。

在 IKE 守护进程运行时,系统在阶段 1 交换中向其对等 IKE 实体进行自我验证。与验证方法一样,对等实体也是在 IKE 策略文件中定义的。然后守护进程建立阶段 2 交换的密钥。按照在策略文件中指定的时间间隔,自动刷新 IKE 密钥。in.iked 守护进程通过 PF_KEY 套接字侦听从网络传入的 IKE 请求,并侦听外发通信流量请求。有关更多信息,请参见 pf_key(7P) 手册页。

有两个命令支持 IKE 守护进程。ikeadm 命令可用于查看并临时修改 IKE 策略。要永久修改 IKE 策略,请修改 ike 服务的属性。有关过程,请参见如何查看 IKE 预先共享密钥

使用 ikecert 命令可以查看和管理公钥数据库。此命令管理本地数据库 ike.privatekeyspublickeys。它还管理公钥操作和公钥在硬件上的存储。

IKE 策略文件

IKE 策略的配置文件 /etc/inet/ike/config 管理在 IPsec 策略文件 /etc/inet/ipsecinit.conf 中保护的接口的密钥。IKE 策略文件管理 IKE 和 IPsec SA 的密钥。在阶段 1 交换中,IKE 守护进程本身需要加密材料。

使用 IKE 的密钥管理包括规则和全局参数。IKE 规则标识加密材料保护的系统或网络。该规则还指定验证方法。全局参数包括诸如已连接硬件加速器路径之类的项。有关 IKE 策略文件的示例,请参见使用预先共享的密钥配置 IKE(任务列表)。有关 IKE 策略项的示例和说明,请参见 ike.config(4) 手册页。

IKE 支持的 IPsec SA 根据在 IPsec 策略的配置文件 /etc/inet/ipsecinit.conf 中设置的策略来保护 IP 数据报。IKE 策略文件确定是否在创建 IPsec SA 时使用完全转发保密 (perfect forward security, PFS)。

ike/config 文件可以包括按照以下标准实现的库的路径:RSA Security Inc. 推出的 PKCS #11 加密令牌接口 (Cryptographic Token Interface, Cryptoki)。IKE 使用此 PKCS #11 库访问用于密钥加速和密钥存储的硬件。

ike/config 文件的安全注意事项与 ipsecinit.conf 文件的安全注意事项类似。有关详细信息,请参见ipsecinit.confipsecconf 的安全注意事项

IKE 管理命令

可以使用 ikeadm 命令执行以下操作:

有关此命令的选项的示例和完整说明,请参见 ikeadm(1M) 手册页。

正在运行的 IKE 守护进程的权限级别决定可以查看和修改 IKE 守护进程的哪些方面。可以有三种权限级别。

base 级别

不能查看或修改加密材料。base 级别是缺省权限级别。

modkeys 级别

可以删除、更改和添加预先共享的密钥。

keymat 级别

可以使用 ikeadm 命令查看实际的加密材料。

如果要临时更改权限,可使用 ikeadm 命令。如果要进行永久更改,请更改 ike 服务的 admin_privilege 属性。有关过程,请参见如何管理 IKE 和 IPsec 服务

ikeadm 命令的安全注意事项与 ipseckey 命令的安全注意事项类似。有关详细信息,请参见ipseckey 的安全注意事项

IKE 预先共享的密钥文件

如果手动创建预先共享的密钥,这些密钥将存储在 /etc/inet/secret 目录下的文件中。ike.preshared 文件包含用于 Internet 安全关联和密钥管理协议 (Internet Security Association and Key Management Protocol, ISAKMP) SA 的预先共享的密钥。ipseckeys 文件包含用于 IPsec SA 的预先共享的密钥。按 0600 保护这些文件。按 0700 保护 secret 目录。


注 –

预先共享的密钥不能利用硬件存储。预先共享的密钥是在系统上生成和存储的。


IKE 公钥数据库和命令

ikecert 命令处理本地系统的公钥数据库。在 ike/config 文件需要公钥证书时,可以使用此命令。由于 IKE 使用这些数据库验证阶段 1 交换,因此必须在激活 in.iked 守护进程之前填充这些数据库。以下三个子命令可分别处理三种数据库中的其中一种: certlocalcertdbcertrldb

ikecert 命令还处理密钥存储。密钥可以存储在磁盘上、连接的 Sun Crypto Accelerator 6000 或 Sun Crypto Accelerator 4000 板上或 softtoken 密钥库中。当 Solaris 加密框架中的 metaslot 用于和硬件设备进行通信时,softtoken 密钥库是可用的。ikecert 命令使用 PKCS #11 库定位密钥存储。

有关更多信息,请参见 ikecert(1M) 手册页。有关 metaslot 以及 softtoken 密钥库的信息,请参见 cryptoadm(1M) 手册页。

ikecert tokens 命令

tokens 参数列出可用的标记 ID。使用标记 ID,ikecert certlocalikecert certdb 命令可以生成公钥证书和证书请求。证书和证书请求也可以由加密框架存储在 softtoken 密钥库中或存储在连接的 Sun Crypto Accelerator 6000 或 Sun Crypto Accelerator 4000 板上。ikecert 命令使用 PKCS #11 库定位证书存储。

ikecert certlocal 命令

certlocal 子命令管理私钥数据库。使用此子命令的选项,可以添加、查看和删除私钥。此子命令还用于创建自签名的证书或证书请求。-ks 选项用于创建自签名的证书。-kc 选项用于创建证书请求。密钥存储在系统的 /etc/inet/secret/ike.privatekeys 目录中,或者通过 -T 选项存储在连接的硬件上。

创建私钥时,ikecert certlocal 命令的选项必须在 ike/config 文件中具有相关项。ikecert 选项和 ike/config 项之间的对应关系如下表所示。

表 24–1 ikecert 选项和 ike/config 项之间的对应关系

ikecert 选项

ike/config

说明 

-A subject-alternate-name

cert_trust subject-alternate-name

唯一标识证书的别名。可能的值是 IP 地址、电子邮件地址或域名。 

-D X.509-distinguished-name

X.509-distinguished-name

证书颁发机构的完整名称,包括国家/地区 (C)、组织名称 (ON)、组织单元 (OU) 和公用名称 (CN)。 

-t dsa-sha1

auth_method dss_sig

一种速度比 RSA 稍慢的验证方法。

-t rsa-md5

-t rsa-sha1

auth_method rsa_sig

一种速度比 DSA 稍快的验证方法。

RSA 公钥必须大到足以加密最大的 payload(有效负荷)。通常,标识有效负荷(如 X.509 标识名)是最大的有效负荷。

-t rsa-md5

-t rsa-sha1

auth_method rsa_encrypt

RSA 加密防止窃听者知道 IKE 中的标识,但是要求 IKE 对等方知道彼此的公钥。 

-T

pkcs11_path

PKCS #11 库处理 Sun Crypto Accelerator 1000 板、Sun Crypto Accelerator 6000 板和 Sun Crypto Accelerator 4000 板上的密钥加速。该库还提供处理 Sun Crypto Accelerator 6000 和 Sun Crypto Accelerator 4000 板上密钥存储的标记。

如果使用 ikecert certlocal -kc 命令发出证书请求,则会将该命令的输出发送到 PKI 组织或证书颁发机构 (certificate authority, CA)。如果您的公司运行自己的 PKI,则会将输出发送到 PKI 管理员。然后,PKI 组织、CA 或 PKI 管理员将创建证书。PKI 或 CA 返回给您的证书是 certdb 子命令的输入。PKI 返回给您的证书撤销列表 (certificate revocation list, CRL) 是 certrldb 子命令的输入。

ikecert certdb 命令

certdb 子命令管理公钥数据库。使用此子命令的选项,可以添加、查看以及删除证书和公钥。该命令将 ikecert certlocal -ks 命令在远程系统上生成的证书作为输入接受。有关过程,请参见如何使用自签名的公钥证书配置 IKE。此命令还将您从 PKI 或 CA 接收的证书接受为输入。有关过程,请参见如何使用 CA 签名的证书配置 IKE

证书和公钥存储在系统的 /etc/inet/ike/publickeys 目录中。-T 选项在连接的硬件上存储证书、私钥和公钥。

ikecert certrldb 命令

certrldb 子命令管理证书撤销列表 (certificate revocation list, CRL) 数据库 /etc/inet/ike/crls。CRL 数据库维护公钥的撤销列表。不再有效的证书包含在此列表中。当 PKI 为您提供 CRL 时,您可以使用 ikecert certrldb 命令在 CRL 数据库中安装 CRL。有关过程,请参见如何处理证书撤销列表

/etc/inet/ike/publickeys 目录

/etc/inet/ike/publickeys 目录将公钥/私钥对的公钥部分及其证书包含在文件或插槽中。按 0755 保护该目录。ikecert certdb 命令填充该目录。-T 选项将密钥存储在 Sun Crypto Accelerator 6000 或 Sun Crypto Accelerator 4000 板上,而不是存储在 publickeys 目录中。

插槽以编码形式包含在其他系统上生成的证书的 X.509 标识名。如果使用自签名的证书,则将从远程系统管理员处接收的证书用作该命令的输入。如果使用来自 CA 的证书,则将两个签名证书从 CA 安装到此数据库中。将安装一个基于发送到 CA 的证书签名请求的证书。也安装 CA 的证书。

/etc/inet/secret/ike.privatekeys 目录

/etc/inet/secret/ike.privatekeys 目录包含作为公钥/私钥对一部分的私钥文件,这是 ISAKMP SA 的加密材料。按 0700 保护该目录。ikecert certlocal 命令填充 ike.privatekeys 目录。在安装其对应公钥、自签名的证书或 CA 后,私钥才生效。对应公钥存储在 /etc/inet/ike/publickeys 目录中,或存储在 Sun Crypto Accelerator 6000 或 Sun Crypto Accelerator 4000 板上。

/etc/inet/ike/crls 目录

/etc/inet/ike/crls 目录包含证书撤销列表 (certificate revocation list, CRL) 文件。每个文件都对应于 /etc/inet/ike/publickeys 目录中的公共证书文件。PKI 组织为其证书提供 CRL。可以使用 ikecert certrldb 命令填充数据库。