第23 章• 配置IKE(任务) 499
{ label "enigma-partym"
local_addr 192.168.116.16
remote_addr 192.168.13.213
p1_xform
{ auth_method preshared oakley_group 5 auth_alg md5 encr_alg 3des }
p2_pfs 5
}
注– auth_method 参数的所有变量都必须在同一行上。
b. 在partym 系统上修改/etc/inet/ike/config 文件:
### ike/config file on partym, 192.168.13.213
## Global Parameters
#
p1_lifetime_secs 14400
p1_nonce_len 40
#
p1_xform
{ auth_method preshared oakley_group 5 auth_alg sha encr_alg des }
p2_pfs 2
## The rule to communicate with enigma
# Label must be unique
{ label "partym-enigma"
local_addr 192.168.13.213
remote_addr 192.168.116.16
使用预先共享的密钥配置IKE
500 系统管理指南:IP 服务• 2006 年8 月
p1_xform
{ auth_method preshared oakley_group 5 auth_alg md5 encr_alg 3des }
p2_pfs 5
}
在每个系统上,检查文件的有效性。
# /usr/lib/inet/in.iked -c -f /etc/inet/ike/config
生成随机数以用作加密材料。
如果站点具有随机数生成器,请使用该生成器。在Solaris 系统上,可以使用od 命令。例
如,以下命令列显两行十六进制数:
% od -X -A n /dev/random | head -2
f47cb0f4 32e14480 951095f8 2b735ba8
0a9467d0 8f92c880 68b6a40e 0efe067d
有关od 命令的说明,请参见第473 页中的“如何在Solaris 系统上生成随机数”和od(1) 手
册页。
从步骤5 的输出构造一个密钥。
f47cb0f432e14480951095f82b735ba80a9467d08f92c88068b6a40e
此过程中的验证算法是MD5,如步骤3 所示。散列的大小(即验证算法输出的大小)确定
预先共享密钥的最小建议大小。MD5 算法的输出是128 位或32 个字符。示例密钥的长度是
56 个字符,这将提供其他加密材料供IKE 使用。
在每个系统上创建文件/etc/inet/secret/ike.preshared。
在每个文件中放置预先共享的密钥。
a. 例如,在enigma 系统上,ike.preshared 文件的显示应与以下信息类似:
# ike.preshared on enigma, 192.168.116.16
#...
{ localidtype IP
localid 192.168.116.16
remoteidtype IP
remoteid 192.168.13.213
# enigma and partym’s shared key in hex (192 bits)
4
5
6
7
使用预先共享的密钥配置IKE
第23 章• 配置IKE(任务) 501
key f47cb0f432e14480951095f82b735ba80a9467d08f92c88068b6a40e
}
b. 在partym 系统上,ike.preshared 文件的显示应与以下信息类似:
# ike.preshared on partym, 192.168.13.213
#...
{ localidtype IP
localid 192.168.13.213
remoteidtype IP
remoteid 192.168.116.16
# partym and enigma’s shared key in hex (192 bits)
key f47cb0f432e14480951095f82b735ba80a9467d08f92c88068b6a40e
}
注– 每个系统上的预先共享密钥必须完全相同。
如何刷新IKE 预先共享密钥
此过程假定您希望在不重新引导的情况下,按固定的时间间隔替换现有的预先共享密钥。
如果使用强加密算法(如3DES 或Blowfish),则可能希望在重新引导这两个系统之前刷新
密钥。
在系统控制台上,承担主管理员角色或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建该角色并将角色指定给用户,请参
见《System Administration Guide: Basic Administration》中的第2 章,“WorkingWith the
Solaris Management Console (Tasks)”。
注– 远程登录会使安全关键型流量易于遭到窃听。即使以某种方式保护远程登录,系统的安
全性也会降至远程登录会话的安全性。
生成随机数,并构造适当长度的密钥。
有关详细信息,请参见第473 页中的“如何在Solaris 系统上生成随机数”。
1
2
使用预先共享的密钥配置IKE
502 系统管理指南:IP 服务• 2006 年8 月
将当前密钥替换为新密钥。
例如,在主机enigma 和partym 上,将/etc/inet/secret/ike.preshared 文件中key 的值替
换为一个相同长度的新数值。
检查in.iked 守护进程的权限级别。
# /usr/sbin/ikeadm get priv
Current privilege level is 0x0, base privileges enabled
如果该命令返回权限级别0x1 或0x2,则您可以更改加密材料。级别0x0 不允许执行修改或
查看加密材料的操作。缺省情况下,in.iked 守护进程按权限级别0x0 运行。
如果权限级别是0x0,请先中止然后再重新启动守护进程。
守护进程重新启动时,它将读取新版本的ike.preshared 文件。
# pkill in.iked
# /usr/lib/inet/in.iked
如果权限级别是0x1 或0x2,则读入新版本的ike.preshared 文件。
# ikeadm read preshared
如何为ipsecinit.conf 中的新策略项添加IKE 预先
共享密钥
对于ipsecinit.conf 文件中的每个策略项,必须具有一个预先共享的密钥。如果在运行
IPsec 和IKE 时添加新策略项,则in.iked 守护进程可以读入新密钥。
此过程将假定以下内容:
按第498 页中的“如何使用预先共享的密钥配置IKE”所述设置了enigma 系统。
enigma 系统将要用新系统ada 保护其流量。
in.iked 守护进程正在这两个系统上运行。
在这两个系统的/etc/hosts 文件中,均会将这些系统的接口作为项列出。以下项是一个
示例。
192.168.15.7 ada
192.168.116.16 enigma
此过程也适用于/etc/inet/ipnodes 文件中的IPv6 地址。
已经在这两个系统上将新的策略项添加到/etc/inet/ipsecinit.conf 文件。这些项的显
示与以下信息类似:
3
4
开始之前
使用预先共享的密钥配置IKE
第23 章• 配置IKE(任务) 503
# ipsecinit.conf file for enigma
{laddr enigma raddr ada} ipsec {auth_algs any encr_algs any sa shared}
# ipsecinit.conf file for ada
{laddr ada raddr enigma} ipsec {auth_algs any encr_algs any sa shared}
在系统控制台上,承担主管理员角色或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建该角色并将角色指定给用户,请参
见《System Administration Guide: Basic Administration》中的第2 章,“WorkingWith the
Solaris Management Console (Tasks)”。
注– 远程登录会使安全关键型流量易于遭到窃听。即使以某种方式保护远程登录,系统的安
全性也会降至远程登录会话的安全性。
为IKE 创建一个规则以管理enigma 和ada 的密钥。
a. 例如,enigma 系统上/etc/inet/ike/config 文件中的规则的显示与以下信息类似:
### ike/config file on enigma, 192.168.116.16
...
## The rule to communicate with ada
{label "enigma-to-ada"
local_addr 192.168.116.16
remote_addr 192.168.15.7
p1_xform
{auth_method preshared oakley_group 5 auth_alg md5 encr_alg blowfish}
p2_pfs 5
}
b. ada 系统上/etc/inet/ike/config 文件中的规则的显示与以下信息类似:
### ike/config file on ada, 192.168.15.7
...
1
2
使用预先共享的密钥配置IKE
504 系统管理指南:IP 服务• 2006 年8 月
## The rule to communicate with enigma
{label "ada-to-enigma"
local_addr 192.168.15.7
remote_addr 192.168.116.16
p1_xform
{auth_method preshared oakley_group 5 auth_alg md5 encr_alg blowfish}
p2_pfs 5
}
检查in.iked 守护进程的权限级别。
# /usr/sbin/ikeadm get priv
Current privilege level is 0x0, base privileges enabled
如果权限级别是0x1 或0x2,则继续执行下一步。
如果权限级别是0x0,则停止守护进程。然后,使用适当的权限级别重新启动该守护进
程。
# pkill in.iked
# /usr/lib/inet/in.iked -p 2
Setting privilege level to 2!
生成随机数,并构造一个64 位到448 位的密钥。
有关详细信息,请参见第473 页中的“如何在Solaris 系统上生成随机数”。
以某种方法将密钥发送给远程系统的管理员。
需要同时添加相同的预先共享密钥。密钥的安全性仅与传输机制的安全性相同。带外机制
(如已注册的邮件或受保护的传真机)是最佳的。
在ikeadm 命令模式下使用add preshared 子命令添加新加密材料。
ikeadm> add preshared { localidtype id-type localid id
remoteidtype id-type remoteid id ike_mode mode key key }
id-type 指定id 的类型。
3
4
5
6
使用预先共享的密钥配置IKE
第23 章• 配置IKE(任务) 505
id 当id-type 为IP 时,指定IP 地址。
mode 指定IKE 模式。可接受的唯一值是main。
key 以十六进制格式指定预先共享的密钥。
a. 例如,在主机enigma 上,为远程系统ada 添加密钥,然后退出ikeadm 交互模式。
# ikeadm
ikeadm> add preshared { localidtype ip localid 192.168.116.16
remoteidtype ip remoteid 192.168.15.7
ike_mode main
key 8d1fb4ee500e2bea071deb2e781cb48374411af5a9671714672bb1749ad9364d }
ikeadm: Successfully created new preshared key.
ikeadm> exit
#
b. 在主机ada 上,为远程系统enigma 添加完全相同的密钥,然后退出交互模式。
# ikeadm
ikeadm> add preshared { localidtype ip localid 192.168.15.7
remoteidtype ip remoteid 192.168.116.16
ike_mode main
key 8d1fb4ee500e2bea071deb2e781cb48374411af5a9671714672bb1749ad9364d }
ikeadm: Successfully created new preshared key.
ikeadm> exit
#
在每个系统上,降低in.iked 守护进程的权限级别。
# ikeadm set privbase
在每个系统上,激活ipsecinit.conf 文件以保护添加的接口。
# ipsecconf -a /etc/inet/ipsecinit.conf
7
8
使用预先共享的密钥配置IKE
506 系统管理指南:IP 服务• 2006 年8 月
注意– 在执行ipsecconf 命令时应阅读警告。该警告也适用于重新启动in.iked 守护进程。
已锁定(即处于使用状态)的套接字提供了一扇通往系统的不安全的后门。有关更广泛的
讨论,请参见第485 页中的“ipsecinit.conf 和ipsecconf 的安全注意事项”。
在每个系统上,使用ikeadm 命令读入新规则。
# ikeadm read rules
已在步骤2 中创建规则。由于这些规则位于/etc/inet/ike/config 文件中,所以不必在
ikeadm 命令中指定文件名称。
确保IKE 预先共享密钥在重新引导时是可用的。
将这些密钥添加到/etc/inet/secret/ike.preshared 文件。
a. 例如,在enigma 系统上,将以下加密信息添加到ike.preshared 文件:
# ike.preshared on enigma for the ada interface
#...
{ localidtype IP
localid 192.168.116.16
remoteidtype IP
remoteid 192.168.15.7
# enigma and ada’s shared key in hex (32 - 448 bits required)
key 8d1fb4ee500e2bea071deb2e781cb48374411af5a9671714672bb1749ad9364d
}
b. 在ada 系统上,将以下加密信息添加到ike.preshared 文件:
# ike.preshared on ada for the enigma interface
#...
{ localidtype IP
localid 192.168.15.7
remoteidtype IP
remoteid 192.168.116.16
9
10
使用预先共享的密钥配置IKE
第23 章• 配置IKE(任务) 507
# ada and enigma’s shared key in hex (32 - 448 bits required)
key 8d1fb4ee500e2bea071deb2e781cb48374411af5a9671714672bb1749ad9364d
}
检验系统是否可以进行通信。
请参见第508 页中的“如何检验IKE 预先共享密钥是否完全相同”。
如何检验IKE 预先共享密钥是否完全相同
如果通信系统上的预先共享密钥不是完全相同的,则系统无法进行验证。
在要测试的两个系统之间已配置并启用IPsec。
在系统控制台上,承担主管理员角色或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建该角色并将角色指定给用户,请参
见《System Administration Guide: Basic Administration》中的第2 章,“WorkingWith the
Solaris Management Console (Tasks)”。
注– 远程登录会使安全关键型流量易于遭到窃听。即使以某种方式保护远程登录,系统的安
全性也会降至远程登录会话的安全性。
检查in.iked 守护进程的权限级别。
# /usr/sbin/ikeadm get priv
Current privilege level is 0x0, base privileges enabled
如果权限级别是0x1 或0x2,则继续执行下一步。
如果权限级别是0x0,则停止守护进程。然后,使用适当的权限级别重新启动该守护进
程。
# pkill in.iked
# /usr/lib/inet/in.iked -p 2
Setting privilege level to 2!
在每个系统上,查看预先共享密钥的信息。
# ikeadm dump preshared
PSKEY: Preshared key (24 bytes): f47cb.../192
11
开始之前
1
2
3
使用预先共享的密钥配置IKE
508 系统管理指南:IP 服务• 2006 年8 月
LOCIP: AF_INET: port 0, 192.168.116.16 (enigma).
REMIP: AF_INET: port 0, 192.168.13.213 (partym).
比较两个转储。
如果预先共享的密钥不是完全相同的,则在/etc/inet/secret/ike.preshared 文件中将一个
密钥替换为另一个密钥。
检验完成后,在每个系统上降低in.iked 守护进程的权限级别。
# ikeadm set privbase
使用公钥证书配置IKE(任务列表)
下表提供了为IKE 创建公钥证书的过程的链接。这些过程包括如何在连接的硬件上加速和
存储证书。
任务说明参考
使用自签名的公钥证书配置IKE 在每个系统上创建并放置两个证书:
自签名证书
来自远程系统的公钥证书
第510 页中的“如何使用自签名的
公钥证书配置IKE”
通过PKI 证书颁发机构配置IKE 创建证书请求,然后在每个系统上放置三个证书:
证书颁发机构(Certificate Authority, CA) 通过您
的请求创建的证书
来自CA的公钥证书
来自CA的CRL
第516 页中的“如何使用CA签名
的证书配置IKE”
在本地硬件上配置公钥证书涉及以下操作之一:
在本地硬件上生成自签名证书,然后将公钥从
远程系统添加到硬件。
在本地硬件上生成证书请求,然后将公钥证书
从CA添加到硬件。
第523 页中的“如何在硬件上生成
和存储公钥证书”
更新来自PKI 的证书撤销列表
(certificate revocation list, CRL)
从中心分发点访问CRL。第528 页中的“如何处理证书撤销
列表”
4
5
使用公钥证书配置IKE(任务列表)
第23 章• 配置IKE(任务) 509
使用公钥证书配置IKE
使用公钥证书,通信系统就无需在带外共享秘密加密材料。与预先共享的密钥不同,公钥
证书可以在移动机器或可能重新编号的系统上使用。
公钥证书也可以存储在连接的硬件上。有关过程,请参见第544 页中的“将IKE 配置为查
找连接的硬件(任务列表)”。
如何使用自签名的公钥证书配置IKE
自签名证书比CA颁发的公共证书所需的开销少,但不太易于扩展。
在系统控制台上,承担主管理员角色或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建该角色并将角色指定给用户,请参
见《System Administration Guide: Basic Administration》中的第2 章,“WorkingWith the
Solaris Management Console (Tasks)”。
注– 远程登录会使安全关键型流量易于遭到窃听。即使以某种方式保护远程登录,系统的安
全性也会降至远程登录会话的安全性。
将自签名证书添加到ike.privatekeys 数据库。
# ikecert certlocal -ks|-kc -m keysize -t keytype \
-D dname -A altname
-ks 创建自签名证书。
-kc 创建证书请求。有关过程,请参见第516 页中的“如何使用CA签名的证书配
置IKE”。
-m keysize 是密钥的大小。keysize 可以是512、1024、2048、3072 或4096。
-t keytype 指定要使用的算法类型。keytype 可以是rsa-sha1、rsa-md5 或dsa-sha1。
-D dname 是证书主题的X.509 标识名。dname 通常具有以下形式:C=国家/地区,O=
组织,OU= 组织单元,CN = 公用名称。有效标记是C、O、OU和CN。
-A altname 是证书的替代名称。altname 的形式为tag=value。有效标记是IP、DNS、EMAIL
和DN。
a. 例如,partym 系统上命令的显示与以下信息类似:
# ikecert certlocal -ks -m 1024 -t rsa-md5 \
-D "C=US, O=PartyCompany, OU=US-Partym, CN=Partym" \
-A IP=192.168.13.213
1
2
使用公钥证书配置IKE
510 系统管理指南:IP 服务• 2006 年8 月
Creating software private keys.
Writing private key to file /etc/inet/secret/ike.privatekeys/0.
Enabling external key providers - done.
Acquiring private keys for signing - done.
Certificate:
Proceeding with the signing operation.
Certificate generated successfully (.../publickeys/0)
Finished successfully.
Certificate added to database.
-----BEGIN X509 CERTIFICATE-----
MIICLTCCAZagAwIBAgIBATANBgkqhkiG9w0BAQQFADBNMQswCQYDVQQGEwJVUzEX
...
6sKTxpg4GP3GkQGcd0r1rhW/3yaWBkDwOdFCqEUyffzU
-----END X509 CERTIFICATE-----
b. enigma 系统上命令的显示与以下信息类似:
# ikecert certlocal -ks -m 1024 -t rsa-md5 \
-D "C=JA, O=EnigmaCo, OU=JA-Enigmax, CN=Enigmax" \
-A IP=192.168.116.16
Creating software private keys.
...
Certificate added to database.
-----BEGIN X509 CERTIFICATE-----
MIICKDCCAZGgAwIBAgIBATANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzEV
...
使用公钥证书配置IKE
第23 章• 配置IKE(任务) 511
jpxfLM98xyFVyLCbkr3dZ3Tvxvi732BXePKF2A==
-----END X509 CERTIFICATE-----
保存证书并将它发送到远程系统。
可以将证书粘贴到电子邮件中。
a. 例如,将以下partym 证书发送给enigma 管理员:
To:
From:
Message: -----BEGIN X509 CERTIFICATE-----
MIICLTCCAZagAwIBAgIBATANBgkqhkiG9w0BAQQFADBNMQswCQYDVQQGEwJVUzEX
...
6sKTxpg4GP3GkQGcd0r1rhW/3yaWBkDwOdFCqEUyffzU
-----END X509 CERTIFICATE-----
b. enigma 管理员将向您发送以下enigma 证书:
To:
From:
Message: -----BEGIN X509 CERTIFICATE-----
MIICKDCCAZGgAwIBAgIBATANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzEV
...
jpxfLM98xyFVyLCbkr3dZ3Tvxvi732BXePKF2A==
-----END X509 CERTIFICATE-----
在每个系统上,信任这两个证书。
编辑/etc/inet/ike/config 文件以识别证书。
远程系统的管理员提供cert_trust、remote_addr 和remote_id 参数的值。
a. 例如,在partym 系统上,ike/config 文件的显示应与以下信息类似:
# Explicitly trust the following self-signed certs
# Use the Subject Alternate Name to identify the cert
3
4
使用公钥证书配置IKE
512 系统管理指南:IP 服务• 2006 年8 月
cert_trust "192.168.13.213"
cert_trust "192.168.116.16"
## Parameters that may also show up in rules.
p1_xform
{ auth_method preshared oakley_group 5 auth_alg sha encr_alg des }
p2_pfs 5
{
label "US-partym to JA-enigmax"
local_id_type dn
local_id "C=US, O=PartyCompany, OU=US-Partym, CN=Partym"
remote_id "C=JA, O=EnigmaCo, OU=JA-Enigmax, CN=Enigmax"
local_addr 192.168.13.213
remote_addr 192.168.116.16
p1_xform
{auth_method rsa_sig oakley_group 2 auth_alg md5 encr_alg 3des}
}
使用公钥证书配置IKE
第23 章• 配置IKE(任务) 513
b. 在enigma 系统上,在ike/config 文件中添加本地参数的enigma 值。
对于远程参数,请使用partym 值。确保label 关键字的值是唯一的。此值必须与远程系
统的label 值不同。
...
{
label "JA-enigmax to US-partym"
local_id_type dn
local_id "C=JA, O=EnigmaCo, OU=JA-Enigmax, CN=Enigmax"
remote_id "C=US, O=PartyCompany, OU=US-Partym, CN=Partym"
local_addr 192.168.116.16
remote_addr 192.168.13.213
...
在每个系统上,添加收到的证书。
a. 从管理员的电子邮件中复制公钥。
b. 键入ikecert certdb -a 命令,然后按回车键。
按回车键时,不显示任何提示。
# ikecert certdb -a Press the Return key
c. 粘贴公钥。然后按回车键。要结束输入,请按Ctrl-D 组合键。
-----BEGIN X509 CERTIFICATE-----
MIIC...
...
----END X509 CERTIFICATE----- Press the Return key
-D
5
使用公钥证书配置IKE
514 系统管理指南:IP 服务• 2006 年8 月
列出在系统上存储的证书。
例如,在partym 系统上,公共证书位于插槽1 中,而专用证书位于插槽0 中。
partym # ikecert certdb -l
Certificate Slot Name: 0 Type: rsa-md5 Private Key
Subject Name:
Key Size: 1024
Public key hash: B2BD13FCE95FD27ECE6D2DCD0DE760E2
Certificate Slot Name: 1 Type: rsa-md5 Public Certificate
(Private key in certlocal slot 0) Points to certificate’s private key
Subject Name:
Key Size: 1024
Public key hash: 2239A6A127F88EE0CB40F7C24A65B818
向其他管理员核实这些密钥未被篡改。
例如,可以给其他管理员打电话,以比较公钥散列的值。在这两个系统上,共享证书的公
钥散列应该是完全相同的。
将此值与enigma 系统上的公钥散列进行比较:
enigma # ikecert certdb -l
Certificate Slot Name: 4 Type: rsa-md5 Private Key
Subject Name:
Key Size: 1024
Public key hash: DF3F108F6AC669C88C6BD026B0FCE3A0
Certificate Slot Name: 5 Type: rsa-md5 Public Certificate
(Private key in certlocal slot 4)
Subject Name:
6
7
使用公钥证书配置IKE
第23 章• 配置IKE(任务) 515
Key Size: 1024
Public key hash: 2239A6A127F88EE0CB40F7C24A65B818
注– 在此示例中,公钥散列与系统生成的公钥散列不同。
如何使用CA签名的证书配置IKE
证书颁发机构(CA) 颁发的公共证书需要与外部组织进行协商。证书很容易扩展为保护大量
通信系统。
在系统控制台上,承担主管理员角色或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建该角色并将角色指定给用户,请参
见《System Administration Guide: Basic Administration》中的第2 章,“WorkingWith the
Solaris Management Console (Tasks)”。
注– 远程登录会使安全关键型流量易于遭到窃听。即使以某种方式保护远程登录,系统的安
全性也会降至远程登录会话的安全性。
使用ikecert certlocal -kc 命令创建证书请求。
有关该命令的参数的说明,请参见第510 页中的“如何使用自签名的公钥证书配置IKE”
中的步骤2。
# ikecert certlocal -kc -m keysize -t keytype \
-D dname -A altname
a. 例如,以下命令在partym 系统上创建证书请求:
# ikecert certlocal -kc -m 1024 -t rsa-md5 \
> -D "C=US, O=PartyCompany\, Inc., OU=US-Partym, CN=Partym" \
> -A "DN=C=US, O=PartyCompany\, Inc., OU=US-Partym"
Creating software private keys.
Writing private key to file /etc/inet/secret/ike.privatekeys/2.
Enabling external key providers - done.
Certificate Request:
1
2
使用公钥证书配置IKE
516 系统管理指南:IP 服务• 2006 年8 月
Proceeding with the signing operation.
Certificate request generated successfully (.../publickeys/0)
Finished successfully.
-----BEGIN CERTIFICATE REQUEST-----
MIIByjCCATMCAQAwUzELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFEV4YW1wbGVDb21w
...
lcM+tw0ThRrfuJX9t/Qa1R/KxRlMA3zckO80mO9X
-----END CERTIFICATE REQUEST-----
b. 以下命令在enigma 系统上创建证书请求:
# ikecert certlocal -kc -m 1024 -t rsa-md5 \
> -D "C=JA, O=EnigmaCo\, Inc., OU=JA-Enigmax, CN=Enigmax" \
> -A "DN=C=JA, O=EnigmaCo\, Inc., OU=JA-Enigmax"
Creating software private keys.
...
Finished successfully.
-----BEGIN CERTIFICATE REQUEST-----
MIIBuDCCASECAQAwSTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDFBhcnR5Q29tcGFu
...
8qlqdjaStLGfhDOO
-----END CERTIFICATE REQUEST-----
将证书请求提交到PKI 组织。
PKI 组织可以告诉您如何提交证书请求。大多数组织具有包含提交表单的Web 站点。该表
单要求证明提交是合法的。通常,将证书请求粘贴到表单中。组织在检查您的请求后,将
向您发出以下两个证书对象和已撤销证书的列表:
公钥证书-此证书基于您提交给组织的请求。所提交的请求是此公钥证书的一部分。证
书可对您进行唯一标识。
3
使用公钥证书配置IKE
第23 章• 配置IKE(任务) 517
证书颁发机构-组织的签名。CA检验公钥证书是否合法。
证书撤销列表(Certificate Revocation List, CRL)-组织已撤销的证书的最新列表。如果在
公钥证书中嵌入对CRL的访问,则不会将CRL作为证书对象单独发送。
在公钥证书中嵌入CRL的URI 时,IKE 可以自动检索CRL。同样,在公钥证书中嵌入
DN(LDAP 服务器上的目录名称)项时,IKE 可以从指定的LDAP 服务器检索并高速缓
存CRL。
有关公钥证书中的嵌入式URI 和嵌入式DN项的示例,请参见第528 页中的“如何处理
证书撤销列表”。
将每个证书添加到系统。
ikecert certdb -a 的-a 选项将已粘贴的对象添加到系统上的适当证书数据库。有关更多信
息,请参见第494 页中的“IKE,使用公钥证书”。
a. 在系统控制台上,承担主管理员角色或成为超级用户。
b. 添加从PKI 组织收到的公钥证书。
# ikecert certdb -a
Press the Return key
Paste the certificate:
-----BEGIN X509 CERTIFICATE-----
...
-----END X509 CERTIFICATE----
Press the Return key
-D
c. 添加来自PKI 组织的CA。
# ikecert certdb -a
Press the Return key
Paste the CA:
-----BEGIN X509 CERTIFICATE-----
...
-----END X509 CERTIFICATE----
4
使用公钥证书配置IKE
518 系统管理指南:IP 服务• 2006 年8 月
Press the Return key
-D
d. 如果PKI 组织已发送撤销证书列表,则将CRL 添加到certrldb 数据库:
# ikecert certrldb -a
Press the Return key
Paste the CRL:
-----BEGIN CRL-----
...
-----END CRL----
Press the Return key
-D
使用cert_root 关键字可以在/etc/inet/ike/config 文件中标识PKI 组织。
使用PKI 组织提供的名称。
a. 例如,partym 系统上ike/config 文件的显示可能与以下信息类似:
# Trusted root cert
# This certificate is from Example PKI
# This is the X.509 distinguished name for the CA that it issues.
cert_root "C=US, O=ExamplePKI\, Inc., OU=PKI-Example, CN=Example PKI"
## Parameters that may also show up in rules.
p1_xform
{ auth_method rsa_sig oakley_group 1 auth_alg sha1 encr_alg des }
p2_pfs 2
5
使用公钥证书配置IKE
第23 章• 配置IKE(任务) 519
{
label "US-partym to JA-enigmax - Example PKI"
local_id_type dn
local_id "C=US, O=PartyCompany, OU=US-Partym, CN=Partym"
remote_id "C=JA, O=EnigmaCo, OU=JA-Enigmax, CN=Enigmax"
local_addr 192.168.13.213
remote_addr 192.168.116.16
p1_xform
{auth_method rsa_sig oakley_group 2 auth_alg md5 encr_alg 3des}
}
注– auth_method 参数的所有变量都必须在同一行上。
b. 在enigma 系统上,创建一个类似的文件。
具体而言,enigma ike/config 文件应该满足以下要求:
包括相同的cert_root 值。
对于本地参数,使用enigma 值。
对于远程参数,使用partym 值。
为label 关键字创建唯一值。此值必须与远程系统的label 值不同。
...
cert_root "C=US, O=ExamplePKI\, Inc., OU=PKI-Example, CN=Example PKI"
...
{
label "JA-enigmax to US-partym - Example PKI"
使用公钥证书配置IKE
520 系统管理指南:IP 服务• 2006 年8 月
local_id_type dn
local_id "C=JA, O=EnigmaCo, OU=JA-Enigmax, CN=Enigmax"
remote_id "C=US, O=PartyCompany, OU=US-Partym, CN=Partym"
local_addr 192.168.116.16
remote_addr 192.168.13.213
...
通知IKE 如何处理CRL。
选择适当的选项:
未提供CRL
如果PKI 组织未提供CRL,则将关键字ignore_crls 添加到ike/config 文件。
# Trusted root cert
...
cert_root "C=US, O=ExamplePKI\, Inc., OU=PKI-Example,...
ignore_crls
...
ignore_crls 关键字指示IKE 不搜索CRL。
提供了CRL
如果PKI 组织提供了CRL的中心分发点,则可以修改ike/config 文件以指向该位置。
有关示例,请参见第528 页中的“如何处理证书撤销列表”。
配置IKE 时使用rsa_encrypt
在ike/config 文件中使用auth_method rsa_encrypt 时,必须将对等方的证书添加到
publickeys 数据库。
1. 将证书发送给远程系统的管理员。
可以将证书粘贴到电子邮件中。
例如,partym 管理员将发送以下电子邮件:
6
示例23–1
使用公钥证书配置IKE
第23 章• 配置IKE(任务) 521
To:
From:
Message: -----BEGIN X509 CERTIFICATE-----
MII...
----END X509 CERTIFICATE-----
enigma 管理员将发送以下电子邮件:
To:
From:
Message: -----BEGIN X509 CERTIFICATE-----
MII
...
-----END X509 CERTIFICATE-----
2. 在每个系统上,将通过电子邮件发送的证书添加到本地publickeys 数据库。
# ikecert certdb -a
Press the Return key
-----BEGIN X509 CERTIFICATE-----
MII...
-----END X509 CERTIFICATE-----
Press the Return key
-D
RSA加密的验证方法可防止窃听者知道IKE 中的标识。由于rsa_encrypt 方法隐藏对等方的
标识,IKE 无法检索对等方的证书。因此,rsa_encrypt 方法要求IKE 对等方知道彼此的公
钥。
所以,在/etc/inet/ike/config 文件中使用rsa_encrypt 的auth_method 时,必须将对等方
的证书添加到publickeys 数据库。添加证书后,publickeys 数据库包含每对通信系统的三
个证书:
使用公钥证书配置IKE
522 系统管理指南:IP 服务• 2006 年8 月
您的公钥证书
CA证书
对等方的公钥证书
疑难解答-IKE 有效负荷(它包括这三个证书)可能变得过大而无法由rsa_encrypt 加密。
诸如“授权失败”和“有效负荷格式错误”之类的错误,可以指示rsa_encrypt 方法无法对总有
效负荷进行加密。使用仅需要两个证书的方法(如rsa_sig)来减小有效负荷的大小。
如何在硬件上生成和存储公钥证书
在硬件上生成和存储公钥证书,与在系统上生成和存储公钥证书类似。但有两点不同:
ikecert certlocal 和ikecert certdb 命令必须标识硬件。带有标记ID 的-T 选项向命令
标识硬件。
在Solaris 10 发行版中,/etc/inet/ike/config 文件必须通过pkcs11_path 关键字指向硬
件。
必须配置硬件。
/etc/inet/ike/config 文件必须指向按照RSASecurity Inc. 推出的PKCS #11 加密令牌接
口(Cryptographic Token Interface, Cryptoki) 标准实现的库,即PKCS #11 库。
有关设置说明,请参见第546 页中的“如何将IKE 配置为查找Sun Crypto 加速器4000 板
”。
在系统控制台上,承担主管理员角色或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建该角色并将角色指定给用户,请参
见《System Administration Guide: Basic Administration》中的第2 章,“WorkingWith the
Solaris Management Console (Tasks)”。
注– 远程登录会使安全关键型流量易于遭到窃听。即使以某种方式保护远程登录,系统的安
全性也会降至远程登录会话的安全性。
生成自签名证书或证书请求,并指定标记ID。
选择以下选项之一:
注– 对于RSA,Sun Crypto 加速器4000 板最多支持2048 位的密钥。对于DSA,此板最多支
持1024 位的密钥。
对于自签名证书,请使用此语法。
# ikecert certlocal -ks -m 1024 -t rsa-md5 \
> -D "C=US, O=PartyCompany, OU=US-Partym, CN=Partym" \
开始之前
1
2
使用公钥证书配置IKE
第23 章• 配置IKE(任务) 523
> -a -T dca0-accel-stor IP=192.168.116.16
Creating hardware private keys.
Enter PIN for PKCS#11 token: Type user:password
-T 选项的参数是来自已连接Sun Crypto 加速器4000 板的标记ID。
对于证书请求,请使用此语法。
# ikecert certlocal -kc -m 1024 -t rsa-md5 \
> -D "C=US, O=PartyCompany, OU=US-Partym, CN=Partym" \
> -a -T dca0-accel-stor IP=192.168.116.16
Creating hardware private keys.
Enter PIN for PKCS#11 token: Type user:password
有关ikecert 命令的参数的说明,请参见ikecert(1M) 手册页。
在系统提示输入PIN 时,键入Sun Crypto 加速器4000 用户、冒号和该用户的口令。
如果Sun Crypto 加速器4000 板具有口令为rgm4tigt 的用户ikemgr,请键入以下内容:
Enter PIN for PKCS#11 token: ikemgr:rgm4tigt
注– PIN 响应以明文形式存储在磁盘上。
键入口令后,将输出证书内容:
Enter PIN for PKCS#11 token: ikemgr:rgm4tigt
-----BEGIN X509 CERTIFICATE-----
MIIBuDCCASECAQAwSTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDFBhcnR5Q29tcGFu
...
oKUDBbZ9O/pLWYGr
-----END X509 CERTIFICATE-----
发送您的证书以供对方使用。
选择以下选项之一:
将自签名证书发送到远程系统。
可以将证书粘贴到电子邮件中。
3
4
使用公钥证书配置IKE
524 系统管理指南:IP 服务• 2006 年8 月
将证书请求发送到处理PKI 的组织。
按照PKI 组织的说明提交证书请求。有关更详细的讨论,请参见第516 页中的“如何使
用CA签名的证书配置IKE”的步骤3。
在系统上,编辑/etc/inet/ike/config 文件以识别这些证书。
选择以下选项之一。
自签名证书
使用远程系统管理员为cert_trust、remote_id 和remote_addr 参数提供的值。例如,在
enigma 系统上,ike/config 文件的显示与以下信息类似:
# Explicitly trust the following self-signed certs
# Use the Subject Alternate Name to identify the cert
cert_trust "192.168.116.16" Local system’s certificate
cert_trust "192.168.13.213" Remote system’s certificate
# Solaris 10 1/06 release: default path
pkcs11_path "/usr/lib/libpkcs11.so" Hardware connection
# Solaris 10 release: use this path
#pkcs11_path "/opt/SUNWconn/cryptov2/lib/libvpkcs11.so"
...
{
label "JA-enigmax to US-partym"
local_id_type dn
local_id "C=JA, O=EnigmaCo, OU=JA-Enigmax, CN=Enigmax"
remote_id "C=US, O=PartyCompany, OU=US-Partym, CN=Partym"
5
使用公钥证书配置IKE
第23 章• 配置IKE(任务) 525
local_addr 192.168.116.16
remote_addr 192.168.13.213
p1_xform
{auth_method rsa_sig oakley_group 2 auth_alg md5 encr_alg 3des}
}
证书请求
将PKI 组织提供的名称作为cert_root 关键字的值键入。例如,enigma 系统上
ike/config 文件的显示可能与以下信息类似:
# Trusted root cert
# This certificate is from Example PKI
# This is the X.509 distinguished name for the CA that it issues.
cert_root "C=US, O=ExamplePKI\, Inc., OU=PKI-Example, CN=Example PKI"
# Solaris 10 1/06 release: default path
pkcs11_path "/usr/lib/libpkcs11.so" Hardware connection
# Solaris 10 release: use this path
#pkcs11_path "/opt/SUNWconn/cryptov2/lib/libvpkcs11.so"
...
{
label "JA-enigmax to US-partym - Example PKI"
local_id_type dn
使用公钥证书配置IKE
526 系统管理指南:IP 服务• 2006 年8 月
local_id "C=JA, O=EnigmaCo, OU=JA-Enigmax, CN=Enigmax"
remote_id "C=US, O=PartyCompany, OU=US-Partym, CN=Partym"
local_addr 192.168.116.16
remote_addr 192.168.13.213
p1_xform
{auth_method rsa_sig oakley_group 2 auth_alg md5 encr_alg 3des}
}
在硬件中存放来自对方的证书。
按照在步骤3 中作出的响应,响应PIN 请求。
注– 必须将公钥证书添加到生成私钥的那个连接硬件上。
自签名证书。
添加远程系统的自签名证书。
# ikecert certdb -a -T dca0-accel-stor
Press the Return key
Paste the self-signed certificate
-D
Enter PIN for PKCS#11 token: Type user:password
如果自签名证书将rsa_encrypt 用作auth_method 参数的值,则将对等方的证书添加到硬
件存储。
来自PKI 组织的证书。
添加组织从证书请求生成的证书,然后添加证书颁发机构(certificate authority, CA)。
# ikecert certdb -a -T dca0-accel-stor
Press the Return key
Paste the returned certificate
6
使用公钥证书配置IKE
第23 章• 配置IKE(任务) 527
-D
Enter PIN for PKCS#11 token: Type user:password
# ikecert certdb -a -T dca0-accel-stor
Press the Return key
Paste the CAcertificate
-D
Enter PIN for PKCS#11 token: Type user:password
要添加来自PKI 组织的证书撤销列表(certificate revocation list, CRL),请参见第528 页中
的“如何处理证书撤销列表”。
如何处理证书撤销列表
证书撤销列表(certificate revocation list, CRL) 包含来自证书颁发机构的过时证书或已损坏证
书。CRL的处理方式有四种。
如果CA组织未发出CRL,则您必须指示IKE 忽略CRL。第516 页中的“如何使用CA签
名的证书配置IKE”的步骤6 中显示了此选项。
可以指示IKE 从一个URI(uniform resource indicator,统一资源指示器)访问CRL,该
URI 的地址嵌入到来自CA的公钥证书中。
可以指示IKE 从LDAP 服务器访问CRL,该服务器的DN(directory name,目录名称)
项嵌入到来自CA的公钥证书中。
可以将CRL 作为ikecert certrldb 命令的参数提供。有关示例,请参见示例23–2。
以下过程介绍如何指示IKE 从中心分发点使用CRL。
显示从CA收到的证书。
# ikecert certdb -lv certspec
-l 列出IKE 证书数据库中的证书。
-v 以详细模式列出证书。应谨慎使用此选项。
certspec 是一种与IKE 证书数据库中的证书匹配的模式。
例如,以下证书是由Sun Microsystems 颁发的。详细信息已更改。
# ikecert certdb -lvexample-protect.sun.com
1
使用公钥证书配置IKE
528 系统管理指南:IP 服务• 2006 年8 月
Certificate Slot Name: 0 Type: dsa-sha1
(Private key in certlocal slot 0)
Subject Name:
Issuer Name:
SerialNumber: 14000D93
Validity:
Not Valid Before: 2002 Jul 19th, 21:11:11 GMT
Not Valid After: 2005 Jul 18th, 21:11:11 GMT
Public Key Info:
Public Modulus (n) (2048 bits): C575A...A5
Public Exponent (e) ( 24 bits): 010001
Extensions:
Subject Alternative Names:
DNS = example-protect.sun.com
Key Usage: DigitalSignature KeyEncipherment
[CRITICAL]
CRL Distribution Points:
Full Name:
URI = #I
DN =
CRL Issuer:
Authority Key ID:
Key ID: 4F ... 6B
SubjectKeyID: A5 ... FD
使用公钥证书配置IKE
第23 章• 配置IKE(任务) 529
Certificate Policies
Authority Information Access
请注意CRL Distribution Points 项。URI 项指示此组织的CRL 在Web 上是可用的。DN 项
指示CRL在LDAP 服务器上是可用的。在IKE 访问CRL后,将高速缓存该CRL以供将来使
用。
要访问CRL,您需要到达分发点。
选择以下方法之一从中心分发点访问CRL。
使用URI。
将关键字use_http 添加到主机的/etc/inet/ike/config 文件。例如,ike/config 文件的
显示与以下信息类似:
# Use CRL from organization’s URI
use_http
...
使用Web 代理。
将关键字proxy 添加到ike/config 文件。proxy 关键字将URL用作参数,如下所示:
# Use own web proxy
proxy ""
使用LDAP 服务器。
在主机的/etc/inet/ike/config 文件中,将LDAP 服务器指定为ldap-list 关键字的参
数。您的组织提供LDAP 服务器的名称。ike/config 文件中项的显示与以下信息类似:
# Use CRL from organization’s LDAP
ldap-list "ldap1.sun.com:389,ldap2.sun.com"
...
在证书到期之前,IKE 检索并高速缓存CRL。
将CRL粘贴到本地certrldb 数据库中
如果无法从中心分发点获取PKI 组织的CRL,则可以将该CRL手动添加到本地certrldb 数
据库。按照PKI 组织的说明提取CRL,然后使用ikecert certrldb -a 命令将它添加到数据
库。
2
示例23–2
使用公钥证书配置IKE
530 系统管理指南:IP 服务• 2006 年8 月
# ikecert certrldb -a
Press the Return key
Paste the CRL from the PKI organization
Press the Return key
Press -D to enter the CRL into the database
为移动系统配置IKE(任务列表)
下表指向将IKE 配置为处理远程登录到中心站点的系统的过程。
任务说明参考
从站点外与中心站点进行通信允许站点外系统与中心站点进行通信。站点外
系统可能是移动系统。
第531 页中的“如何为站点外
系统配置IKE”
在接受来自移动系统的流量的中心系统
上使用根证书和IKE
将网关系统配置为接受来自没有固定IP 地址的
系统的IPsec 流量。
示例23–3
在没有固定IP 地址的系统上使用根证书
和IKE
将移动系统配置为保护它传输到中心站点(如
公司总部)的流量。
示例23–4
在接受来自移动系统的流量的中心系统
上使用自签名证书和IKE
使用自签名证书配置网关系统,以接受来自移
动系统的IPsec 流量。
示例23–5
在没有固定IP 地址的系统上使用自签名
证书和IKE
使用自签名证书配置移动系统,以保护它传输
到中心站点的流量。
示例23–6
为移动系统配置IKE
在进行适当配置后,家庭办公室和膝上型移动计算机可以使用IPsec 和IKE 与其公司的中央
计算机进行通信。利用与公钥证书验证方法组合的综合IPsec 策略,离站系统可以保护它们
传输到中心系统的流量。
如何为站点外系统配置IKE
IPsec 和IKE 要求用唯一ID 标识源和目标。对于没有唯一IP 地址的站点外系统或移动系
统,必须使用其他ID 类型。可以使用诸如DNS、DN或EMAIL之类的ID 类型唯一地标识
系统。
为移动系统配置IKE
第23 章• 配置IKE(任务) 531
对于具有唯一IP 地址的站点外系统或移动系统,最好也应使用其他ID 类型进行配置。例
如,如果系统尝试从NAT 盒(NAT box) 之后连接到中心站点,则不会使用它们的唯一地
址。NAT 盒(NAT box) 指定一个中心系统无法识别的任意IP 地址。
预先共享的密钥也不太适合用作移动系统的验证机制,因为预先共享的密钥需要固定的IP
地址。使用自签名证书或来自PKI 的证书,移动系统可以与中心站点进行通信。
在中心系统的系统控制台上,承担主管理员角色或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建该角色并将角色指定给用户,请参
见《System Administration Guide: Basic Administration》中的第2 章,“WorkingWith the
Solaris Management Console (Tasks)”。
注– 远程登录会使安全关键型流量易于遭到窃听。即使以某种方式保护远程登录,系统的安
全性也会降至远程登录会话的安全性。
将中心系统配置为识别移动系统。
a. 设置/etc/hosts 文件。
中心系统不必识别移动系统的特定地址。
# /etc/hosts on central
central 192.xxx.xxx.x
b. 设置ipsecinit.conf 文件。
中心系统需要一个允许很宽的IP 地址范围的策略。随后,IKE 策略中的证书确保进行连
接的系统是合法的。
# /etc/inet/ipsecinit.conf on central
# Keep everyone out unless they use this IPsec policy:
{} ipsec {encr_algs aes encr_auth_algs md5 sa shared}
c. 设置ike.config 文件。
DNS 标识中心系统。证书用于验证该系统。
# /etc/inet/ike/ike.config on central
# Global parameters
# Enable faster public key operations
# Solaris 10 1/06 release: default path
pkcs11_path "/usr/lib/libpkcs11.so"
#
1
2
为移动系统配置IKE
532 系统管理指南:IP 服务• 2006 年8 月
# Find CRLs by URI, URL, or LDAP
# Use CRL from organization’s URI
use_http
#
# Use web proxy
proxy ""
#
# Use LDAP server
ldap_server "ldap-server1.domain.org,ldap2.domain.org:port"
#
# List CA-signed certificates
cert_root "C=US, O=Domain Org, CN=Domain STATE"
#
# List self-signed certificates - trust server and enumerated others
#cert_trust "DNS=central.domain.org"
#cert_trust "DNS=mobile.domain.org"
#cert_trust "DN=CN=Domain Org STATE (CLASS), O=Domain Org
#cert_trust ""
#cert_trust ""
#
# Rule for mobile systems with certificate
{
label "Mobile systems with certificate"
为移动系统配置IKE
第23 章• 配置IKE(任务) 533
local_id_type DNS
# Any mobile system who knows my DNS or IP can find me.
local_id "central.domain.org"
local_addr 192.xxx.xxx.x
# Root certificate ensures trust,
# so allow any remote_id and any remote IP address.
remote_id ""
remote_addr 0.0.0.0/0
p2_pfs 5
p1_xform
{auth_method rsa_sig oakley_group 5 encr_alg blowfish auth_alg md5 }
}
登录到每个移动系统,然后将该系统配置为查找中心系统。
a. 设置/etc/hosts 文件。
/etc/hosts 文件不需要移动系统的地址,但是可以提供一个地址。该文件必须包含中心
系统的公共IP 地址。
# /etc/hosts on mobile
mobile 10.x.x.xx
central 192.xxx.xxx.x
3
为移动系统配置IKE
534 系统管理指南:IP 服务• 2006 年8 月
b. 设置ipsecinit.conf 文件。
移动系统需要按照中心系统的公共IP 地址来查找中心系统。这些系统必须配置相同的
IPsec 策略。
# /etc/inet/ipsecinit.conf on mobile
# Find central
{raddr 192.xxx.xxx.x} ipsec {encr_algs aes encr_auth_algs md5 sa shared}
c. 设置ike.config 文件。
标识符不能是IP 地址。以下标识符对移动系统有效:
DN=ldap-directory-name
DNS=domain-name-server-address
EMAIL=email-address
证书用于验证移动系统。
# /etc/inet/ike/ike.config on mobile
# Global parameters
# Enable faster public key operations
# Solaris 10 1/06 release: default path
pkcs11_path "/usr/lib/libpkcs11.so"
#
# Find CRLs by URI, URL, or LDAP
# Use CRL from organization’s URI
use_http
#
# Use web proxy
proxy ""
#
# Use LDAP server
ldap_server "ldap-server1.domain.org,ldap2.domain.org:port"
为移动系统配置IKE
第23 章• 配置IKE(任务) 535
#
# List CA-signed certificates
cert_root "C=US, O=Domain Org, CN=Domain STATE"
#
# Self-signed certificates - trust me and enumerated others
#cert_trust "DNS=mobile.domain.org"
#cert_trust "DNS=central.domain.org"
#cert_trust "DN=CN=Domain Org STATE (CLASS), O=Domain Org
#cert_trust ""
#cert_trust ""
#
# Rule for off-site systems with root certificate
{
label "Off-site mobile with certificate"
local_id_type DNS
# NAT-T can translate local_addr into any public IP address
# central knows me by my DNS
local_id "mobile.domain.org"
local_addr 0.0.0.0/0
# Find central and trust the root certificate
remote_id "central.domain.org"
为移动系统配置IKE
536 系统管理指南:IP 服务• 2006 年8 月
remote_addr 192.xxx.xxx.x
p2_pfs 5
p1_xform
{auth_method rsa_sig oakley_group 5 encr_alg blowfish auth_alg md5 }
}
配置每个系统后将其重新引导。
或者,先停止然后再启动in.iked 守护进程。
将中心计算机配置为接受来自移动系统的IPsec 流量
IKE 可以从NAT 盒(NAT box) 之后启动协商。但是,IKE 的理想设置是在NAT 盒(NAT box)
没有介入的情况下进行的。在以下示例中,根证书已由CA颁发。已将CA证书放置在移动
系统和中心系统上。中心系统接受来自NAT 盒(NAT box) 之后的系统的IPsec 协商。main1
是可以接受来自站点外系统的连接的公司系统。有关如何设置站点外系统,请参见示例
23–4。
# /etc/hosts on main1
main1 192.168.0.100
# /etc/inet/ipsecinit.conf on main1
# Keep everyone out unless they use this IPsec policy:
{} ipsec {encr_algs aes encr_auth_algs md5 sa shared}
# /etc/inet/ike/ike.config on main1
# Global parameters
# Enable faster public key operations
# Solaris 10 1/06 release: default path
pkcs11_path "/usr/lib/libpkcs11.so"
#
4
示例23–3
为移动系统配置IKE
第23 章• 配置IKE(任务) 537
#
# Find CRLs by URI, URL, or LDAP
# Use CRL from organization’s URI
use_http
#
# Use web proxy
proxy ""
#
# Use LDAP server
ldap_server "ldap1.domain.org,ldap2.domain.org:389"
#
#
# List CA-signed certificate
cert_root "C=US, O=ExamplePKI Inc, OU=PKI-Example, CN=Example PKI"
#
# Rule for off-site systems with root certificate
{
label "Off-site system with root certificate"
local_id_type DNS
local_id "main1.domain.org"
local_addr 192.168.0.100
# Root certificate ensures trust,
# so allow any remote_id and any remote IP address.
为移动系统配置IKE
538 系统管理指南:IP 服务• 2006 年8 月
remote_id ""
remote_addr 0.0.0.0/0
p2_pfs 5
p1_xform
{auth_method rsa_sig oakley_group 5 encr_alg blowfish auth_alg md5}
p1_xform
{auth_method rsa_sig oakley_group 5 encr_alg 3des auth_alg md5}
p1_xform
{auth_method rsa_sig oakley_group 5 encr_alg blowfish auth_alg sha}
p1_xform
{auth_method rsa_sig oakley_group 5 encr_alg 3des auth_alg sha}
}
使用IPsec 配置NAT 之后的系统
在以下示例中,根证书已由CA颁发,并放置在移动系统和中心系统上。mobile1 将从本部
连接到公司总部。Internet 服务提供商(Internet service provider, ISP) 网络使用NAT 盒(NAT
box),以允许ISP 为mobile1 指定专用地址。然后,NAT 盒(NAT box) 将专用地址转换为与
其他ISP 网络节点共享的公共IP 地址。公司总部不在NAT 之后。有关如何在公司总部设置
计算机,请参见示例23–3。
# /etc/hosts on mobile1
mobile1 10.1.3.3
main1 192.168.0.100
# /etc/inet/ipsecinit.conf on mobile1
# Find main1
{raddr 192.168.0.100} ipsec {encr_algs aes encr_auth_algs md5 sa shared}
示例23–4
为移动系统配置IKE
第23 章• 配置IKE(任务) 539
# /etc/inet/ike/ike.config on mobile1
# Global parameters
# Enable faster public key operations
# Solaris 10 1/06 release: default path
pkcs11_path "/usr/lib/libpkcs11.so"
#
# Find CRLs by URI, URL, or LDAP
# Use CRL from organization’s URI
use_http
#
# Use web proxy
proxy ""
#
# Use LDAP server
ldap_server "ldap1.domain.org,ldap2.domain.org:389"
#
# List CA-signed certificate
cert_root "C=US, O=ExamplePKI Inc, OU=PKI-Example, CN=Example PKI"
#
# Rule for off-site systems with root certificate
{
label "Off-site mobile1 with root certificate"
local_id_type DNS
local_id "mobile1.domain.org"
为移动系统配置IKE
540 系统管理指南:IP 服务• 2006 年8 月
local_addr 0.0.0.0/0
# Find main1 and trust the root certificate
remote_id "main1.domain.org"
remote_addr 192.168.0.100
p2_pfs 5
p1_xform
{auth_method rsa_sig oakley_group 5 encr_alg blowfish auth_alg md5 }
}
接受来自移动系统的自签名证书
在以下示例中,自签名证书已经颁发,并存放在移动系统和中心系统上。main1 是可以接受
来自站点外系统的连接的公司系统。有关如何设置站点外系统,请参见示例23–6。
# /etc/hosts on main1
main1 192.168.0.100
# /etc/inet/ipsecinit.conf on main1
# Keep everyone out unless they use this IPsec policy:
{} ipsec {encr_algs aes encr_auth_algs md5 sa shared}
# /etc/inet/ike/ike.config on main1
# Global parameters
#
# Self-signed certificates - trust me and enumerated others
cert_trust "DNS=main1.domain.org"
cert_trust ""
示例23–5
为移动系统配置IKE
第23 章• 配置IKE(任务) 541
cert_trust ""
cert_trust ""
#
# Rule for off-site systems with trusted certificate
{
label "Off-site systems with trusted certificates"
local_id_type DNS
local_id "main1.domain.org"
local_addr 192.168.0.100
# Trust the self-signed certificates
# so allow any remote_id and any remote IP address.
remote_id ""
remote_addr 0.0.0.0/0
p2_pfs 5
p1_xform
{auth_method rsa_sig oakley_group 5 encr_alg blowfish auth_alg md5 }
}
使用自签名证书联系中心系统
在以下示例中,mobile1 将从本部连接到公司总部。证书已经颁发,并放置在移动系统和中
心系统上。ISP 网络使用NAT 盒(NAT box),以允许ISP 为mobile1 指定专用地址。然后,
NAT 盒(NAT box) 将专用地址转换为与其他ISP 网络节点共享的公共IP 地址。公司总部不
在NAT 之后。有关如何在公司总部设置计算机,请参见示例23–5。
示例23–6
为移动系统配置IKE
542 系统管理指南:IP 服务• 2006 年8 月
# /etc/hosts on mobile1
mobile1 10.1.3.3
main1 192.168.0.100
# /etc/inet/ipsecinit.conf on mobile1
# Find main1
{raddr 192.168.0.100} ipsec {encr_algs aes encr_auth_algs md5 sa shared}
# /etc/inet/ike/ike.config on mobile1
# Global parameters
# Self-signed certificates - trust me and the central system
cert_trust ""
cert_trust "DNS=main1.domain.org"
#
# Rule for off-site systems with trusted certificate
{
label "Off-site mobile1 with trusted certificate"
local_id_type EMAIL
local_id ""
local_addr 0.0.0.0/0
# Find main1 and trust the certificate
remote_id "main1.domain.org"
remote_addr 192.168.0.100
为移动系统配置IKE
第23 章• 配置IKE(任务) 543
p2_pfs 5
p1_xform
{auth_method rsa_sig oakley_group 5 encr_alg blowfish auth_alg md5 }
}
将IKE 配置为查找连接的硬件(任务列表)
下表包含将已连接硬件的相关信息通知IKE 的过程的链接。只有将已连接硬件的相关信息
通知IKE,IKE 才能使用该硬件。要使用硬件,请按照第510 页中的“使用公钥证书配置
IKE”中的硬件过程操作。
任务说明参考
将IKE 密钥操作转移到Sun Crypto
加速器1000 板
将IKE 链接到PKCS #11 库。第544 页中的“如何将IKE 配置为查找
Sun Crypto 加速器1000 板”
将IKE 密钥操作转移到Sun Crypto
加速器4000 板并在该板上存储密钥
将IKE 链接到PKCS #11 库,并列出已连
接硬件的名称。
第546 页中的“如何将IKE 配置为查找
Sun Crypto 加速器4000 板”
将IKE 配置为查找连接的硬件
也可以将公钥证书存储在连接的硬件、Sun Crypto 加速器1000 板和Sun Crypto 加速器4000
板上。对于Sun Crypto 加速器4000 板,也可以将公钥操作从系统转移到该板上。
如何将IKE 配置为查找Sun Crypto 加速器1000 板
以下过程假定Sun Crypto 加速器1000 板已连接到系统。该过程还假定已安装了该板的软
件,而且已配置该软件。有关说明,请参见《Sun Crypto 加速器1000 板版本1.1 安装与用户
指南》。
在系统控制台上,承担主管理员角色或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建该角色并将角色指定给用户,请参
见《System Administration Guide: Basic Administration》中的第2 章,“WorkingWith the
Solaris Management Console (Tasks)”。
开始之前
1
将IKE 配置为查找连接的硬件(任务列表)
544 系统管理指南:IP 服务• 2006 年8 月
注– 远程登录会使安全关键型流量易于遭到窃听。即使以某种方式保护远程登录,系统的安
全性也会降至远程登录会话的安全性。
将PKCS #11 库路径添加到/etc/inet/ike/config 文件。
路径名称必须指向32 位PKCS #11 库。如果存在该库,则IKE 使用该库的例程在Sun Crypto
加速器1000 板上加速IKE 公钥操作。在该板处理这些开销很大的操作时,操作系统资源就
可以供其他操作使用。
Solaris 10 1/06:在此发行版中,缺省情况下使用/usr/lib/libpkcs11.so 库。
可以指定该库,但不是必须指定。
pkcs11_path "/usr/lib/libpkcs11.so"
Solaris 10:可以使用以下路径:
pkcs11_path "/opt/SUNWconn/cryptov2/lib/libvpkcs11.so"
关闭文件并重新引导。
重新引导后,检查该库是否已链接。
键入以下命令,以确定PKCS #11 库是否已链接:
# ikeadm get stats
Phase 1 SA counts:
Current: initiator: 0 responder: 0
Total: initiator: 0 responder: 0
Attempted: initiator: 0 responder: 0
Failed: initiator: 0 responder: 0
initiator fails include 0 time-out(s)
PKCS#11 library linked in from /opt/SUNWconn/cryptov2/lib/libvpkcs11.so
#
与/etc/inet/ike/config 文件中的其他参数不同,在启动IKE 时pkcs11_path 关键字是只读
的。如果使用ikeadm 命令添加或重新装入新的/etc/inet/ike/config 文件,则pkcs11_path
将一直存在。该路径之所以一直存在,是因为IKE 守护进程不销毁来自阶段1 交换的数据。
由PKCS #11 加速的密钥是阶段1 数据的一部分。
2
3
4
将IKE 配置为查找连接的硬件
第23 章• 配置IKE(任务) 545
Solaris 10 1/06:在此发行版中,可以在softtoken 密钥库中存储密钥。
有关Solaris 加密框架提供的密钥库的信息,请参见cryptoadm(1M) 手册页。有关使用密钥
库的示例,请参见示例23–7。
如何将IKE 配置为查找Sun Crypto 加速器4000 板
以下过程假定Sun Crypto 加速器4000 板已连接到系统。此过程还假定已安装板的软件,而
且已配置该软件。有关说明,请参见《Sun Crypto 加速器4000 板安装和用户指南》。该指
南可以从 Web 站点下载,它位
于Network and Security Products(网络和安全产品)下。
在系统控制台上,承担主管理员角色或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建该角色并将角色指定给用户,请参
见《System Administration Guide: Basic Administration》中的第2 章,“WorkingWith the
Solaris Management Console (Tasks)”。
注– 远程登录会使安全关键型流量易于遭到窃听。即使以某种方式保护远程登录,系统的安
全性也会降至远程登录会话的安全性。
将PKCS #11 库路径添加到/etc/inet/ike/config 文件。
路径名称必须指向32 位PKCS #11 库。如果存在该库,则IKE 使用该库的例程在Sun Crypto
加速器4000 板上处理密钥生成和密钥存储。
Solaris 10 1/06:在此发行版中,缺省情况下使用/usr/lib/libpkcs11.so 库。
可以指定该库,但不是必须指定。
pkcs11_path "/usr/lib/libpkcs11.so"
Solaris 10:可以使用以下路径:
pkcs11_path "/opt/SUNWconn/cryptov2/lib/libvpkcs11.so"
关闭文件并重新引导。
重新引导后,检查该库是否已链接。
键入以下命令,以确定PKCS #11 库是否已链接:
$ ikeadm get stats
...
PKCS#11 library linked in from /opt/SUNWconn/cryptov2/lib/libvpkcs11.so
$
5
开始之前
1
2
3
4
将IKE 配置为查找连接的硬件
546 系统管理指南:IP 服务• 2006 年8 月
与/etc/inet/ike/config 文件中的其他参数不同,在启动IKE 时,pkcs11_path 关键字是只
读的。如果使用ikeadm 命令添加或重新装入新的/etc/inet/ike/config 文件,则
pkcs11_path 将一直存在。该路径之所以一直存在,是因为IKE 守护进程不销毁阶段1 数
据。
注– 对于RSA,Sun Crypto 加速器4000 板最多支持2048 位的密钥。对于DSA,此板最多支
持1024 位的密钥。
查找已连接Sun Crypto 加速器4000 板的标记ID。
$ ikecert tokens
Available tokens with library "/opt/SUNWconn/cryptov2/lib/libvpkcs11.so":
"vca0-accel "
"dca0-accel-store "
该库返回一个包含32 个字符的标记ID(也称为keystore name(密钥库名称))。在此示例
中,可以将dca0-accel-store 标记与ikecert 命令一起使用以存储和加速IKE 密钥。
有关如何使用标记的说明,请参见第523 页中的“如何在硬件上生成和存储公钥证书”。
结尾空格是由ikecert 命令自动填充的。
查找和使用Metaslot 标记
标记可以存储在磁盘上、连接板上或Solaris 加密框架提供的softtoken 密钥库中。softtoken
密钥库标记ID 可能与以下信息类似。
$ ikecert tokens
Available tokens with library "/usr/lib/libpkcs11.so":
"Sun Metaslot "
有关如何为softtoken 密钥库创建口令短语,请参见pktool(1) 手册页。
与以下信息类似的命令将向softtoken 密钥库添加证书:
# ikecert certdb -a -T "Sun Metaslot"
Press the Return key
5
示例23–7
将IKE 配置为查找连接的硬件
第23 章• 配置IKE(任务) 547
Paste the CAcertificate
-D
Enter PIN for PKCS#11 token: Type user:passphrase
更改IKE 传输参数(任务列表)
下表包含配置IKE 传输参数的过程的链接。
任务说明参考
使密钥协商的效率更高更改密钥协商参数。第548 页中的“如何更改阶段1 IKE 密钥
协商的持续时间”
配置密钥协商以允许传输延迟增大密钥协商参数。示例23–8
将密钥协商配置为快速成功或快速显示
故障
减小密钥协商参数。示例23–9
更改IKE 传输参数
当IKE 协商密钥时,传输速度可能会影响协商的成功。通常,无需更改IKE 传输参数的缺
省值。但是,在通过很脏的线路优化密钥协商时,或者再现问题时,您可能希望更改传输
值。
在持续时间较长的情况下,IKE 可以通过不可靠的传输线路协商密钥。可以增大某些参数以
使初始尝试成功。如果初始尝试未成功,则可以隔开后续尝试以便为成功提供更多时间。
通过缩短持续时间,可以利用可靠的传输线路。这样,可以更快捷地重试已失败的协商,
以便加快协商速度。在诊断问题时,您可能还希望加快协商,以便尽早获得失败的结果。
缩短持续时间也使Phase 1 SA可用于其生命周期。
如何更改阶段1 IKE 密钥协商的持续时间
在系统控制台上,承担主管理员角色或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建该角色并将角色指定给用户,请参
见《System Administration Guide: Basic Administration》中的第2 章,“WorkingWith the
Solaris Management Console (Tasks)”。
1
更改IKE 传输参数(任务列表)
548 系统管理指南:IP 服务• 2006 年8 月
注– 远程登录会使安全关键型流量易于遭到窃听。即使以某种方式保护远程登录,系统的安
全性也会降至远程登录会话的安全性。
在每个系统上更改全局传输参数的缺省值。
在每个系统上,修改/etc/inet/ike/config 文件中的阶段1 持续时间参数。
### ike/config file on system
## Global parameters
#
## Phase 1 transform defaults
#
#expire_timer 300
#retry_limit 5
#retry_timer_init 0.5 (integer or float)
#retry_timer_max 30 (integer or float)
expire_timer 允许尚未完成的IKE 阶段1 协商在删除协商尝试之前延迟的秒数。缺
省情况下,尝试延迟30 秒。
retry_limit 异常中止任何IKE 协商之前的重新传输次数。缺省情况下,IKE 尝试
五次。
retry_timer_init 重新传输之间的初始时间间隔。在达到retry_timer_max 值之前,此
时间间隔以双倍递增。初始时间间隔为0.5 秒。
retry_timer_max 重新传输之间的最大时间间隔(以秒为单位)。重新传输时间间隔在
达到此限制时停止增加。缺省情况下,该限制为30 秒。
重新引导系统。
或者,先停止然后再启动in.iked 守护进程。
延长IKE 阶段1 协商时间
在以下示例中,系统已通过高流量传输线路连接到其IKE 对等方。原始设置位于文件的注
释中。新设置延长了协商时间。
2
3
示例23–8
更改IKE 传输参数
第23 章• 配置IKE(任务) 549
### ike/config file on partym
## Global Parameters
#
## Phase 1 transform defaults
#expire_timer 300
#retry_limit 5
#retry_timer_init 0.5 (integer or float)
#retry_timer_max 30 (integer or float)
#
expire_timer 600
retry_limit 10
retry_timer_init 2.5
retry_timer_max 180
缩短IKE 阶段1 协商时间
在以下示例中,系统已通过小流量的高速线路连接到其IKE 对等方。原始设置位于文件的
注释中。新设置缩短了协商时间。
### ike/config file on partym
## Global Parameters
#
## Phase 1 transform defaults
#expire_timer 300
#retry_limit 5
#retry_timer_init 0.5 (integer or float)
#retry_timer_max 30 (integer or float)
示例23–9
更改IKE 传输参数
550 系统管理指南:IP 服务• 2006 年8 月
#
expire_timer 120
retry_timer_init 0.20
更改IKE 传输参数
第23 章• 配置IKE(任务) 551
552
Internet 密钥交换(参考资料)
本章包含有关IKE 的以下参考信息:
第553 页中的“IKE 守护进程”
第554 页中的“IKE 策略文件”
第554 页中的“IKE 管理命令”
第555 页中的“IKE 预先共享的密钥文件”
第555 页中的“IKE 公钥数据库和命令”
第558 页中的“IKE 状态消息和错误消息”
有关实现IKE 的说明,请参见第23 章。有关概述信息,请参见第22 章。
IKE 守护进程
in.iked 守护进程自动管理Solaris 系统上IPsec 的加密密钥。该守护进程与运行相同协议的
远程系统协商,以便以受保护方式为安全关联(security association, SA) 提供经过验证的加密
材料。必须在计划以安全方式通信的所有系统上运行该守护进程。
如果存在IKE 策略的配置文件/etc/inet/ike/config,则在引导时自动装入IKE 守护进程。
该守护进程检查配置文件的语法。
在IKE 守护进程运行时,系统在阶段1 交换中向其对等IKE 实体进行自我验证。与验证方法
一样,对等实体也是在IKE 策略文件中定义的。然后守护进程建立阶段2 交换的密钥。按照
在策略文件中指定的时间间隔,自动刷新IKE 密钥。in.iked 守护进程侦听从网络传入的
IKE 请求,并侦听通过PF_KEY 套接字的外发通信流量的请求。有关更多信息,请参见
pf_key(7P) 手册页。
有两个命令支持IKE 守护进程。使用ikeadm 命令可以查看和修改IKE 策略。使用ikecert
命令可以查看和管理公钥数据库。此命令管理本地数据库ike.privatekeys 和publickeys。
它还管理公钥操作和公钥在硬件上的存储。
24 第2 4 章
553
IKE 策略文件
IKE 策略的配置文件/etc/inet/ike/config 管理在IPsec 策略文件
/etc/inet/ipsecinit.conf 中保护的接口的密钥。IKE 策略文件管理IKE 和IPsec SA的密
钥。在阶段1 交换中,IKE 守护进程本身需要加密材料。
使用IKE 的密钥管理包括规则和全局参数。IKE 规则标识加密材料保护的系统或网络。该规
则还指定验证方法。全局参数包括诸如已连接硬件加速器路径之类的项。有关IKE 策略文
件的示例,请参见第498 页中的“使用预先共享的密钥配置IKE(任务列表)”。有关IKE
策略项的示例和说明,请参见ike.config(4) 手册页。
IKE 支持的IPsec SA根据在IPsec 策略的配置文件/etc/inet/ipsecinit.conf 中设置的策略
来保护IP 数据报。IKE 策略文件确定是否在创建IPsec SA时使用完全转发保密(perfect
forward security, PFS)。
ike/config 文件可以包括按照以下标准实现的库的路径:RSASecurity Inc. 推出的PKCS #11
加密令牌接口(Cryptographic Token Interface, Cryptoki) 标准。IKE 使用此PKCS #11 库访问用
于密钥加速和密钥存储的硬件。
ike/config 文件的安全注意事项与ipsecinit.conf 文件的安全注意事项类似。有关详细信
息,请参见第485 页中的“ipsecinit.conf 和ipsecconf 的安全注意事项”。
IKE 管理命令
可以使用ikeadm 命令执行以下操作:
查看IKE 守护进程的各个方面。
更改传递到IKE 守护进程的参数。
显示在阶段1 交换期间有关SA创建的统计信息。
调试IKE 进程。
有关此命令的选项的示例和完整说明,请参见ikeadm(1M) 手册页。正在运行的IKE 守护进
程的权限级别决定可以查看和修改IKE 守护进程的哪些方面。可以从三种权限级别中进行
选择:
0x0,即基本级别既不能查看也不能修改加密材料。基本级别是in.iked 守护进程
运行时的缺省级别。
0x1,即modkeys 级别可以删除、更改和添加预先共享的密钥。
0x2,即keymat 级别可以使用ikeadm 命令查看实际的加密材料。
ikeadm 命令的安全注意事项与ipseckey 命令的安全注意事项类似。有关详细信息,请参见
第487 页中的“ipseckey 的安全注意事项”。
IKE 策略文件
554 系统管理指南:IP 服务• 2006 年8 月
IKE 预先共享的密钥文件
手动创建预先共享的密钥时,这些密钥存储在/etc/inet/secret 目录的文件中。
ike.preshared 文件包含用于Internet 安全关联和密钥管理协议(Internet Security Association
and Key Management Protocol, ISAKMP) SA的预先共享的密钥。ipseckeys 文件包含用于
IPsec SA的预先共享的密钥。按0600 保护这些文件。按0700 保护secret 目录。
将ike/config 文件配置为需要预先共享的密钥时,您会创建ike.preshared 文件。在
ike.preshared 文件中输入ISAKMP SA的加密材料(即用于IKE 验证)。由于预先共享
的密钥用于验证阶段1 交换,因此在in.iked 守护进程启动之前,该文件必须有效。
ipseckeys 文件包含IPsec SA的加密材料。有关手动管理该文件的示例,请参见第474 页
中的“如何手动创建IPsec 安全关联”。IKE 守护进程不使用此文件。IKE 为IPsec SA生
成的加密材料存储在内核中。
注– 预先共享的密钥不能利用硬件存储。预先共享的密钥是在系统上生成和存储的。
IKE 公钥数据库和命令
ikecert 命令处理本地系统的公钥数据库。在ike/config 文件需要公钥证书时,可以使用此
命令。由于IKE 使用这些数据库验证阶段1 交换,因此必须在激活in.iked 守护进程之前填
充这些数据库。以下三个子命令可处理三个数据库中的每一个:certlocal、certdb 和
certrldb。
ikecert 命令还处理密钥存储。密钥可以存储在磁盘上、连接的Sun Crypto 加速器4000 板上
或softtoken 密钥库中。当Solaris 加密框架中的metaslot 用于和硬件设备进行通信时,
softtoken 密钥库是可用的。
ikecert 命令的tokens 参数列出可用的标记ID。该命令通过在/etc/inet/ike/config 文件
中指定的PKCS #11 库查找存储位置。
Solaris 10 1/06:在此发行版中,不必指定该库。缺省情况下,PKCS #11 库是
/usr/lib/libpkcs11.so。
Solaris 10:在此发行版中,必须指定PKCS #11 项。否则,ikecert 命令的-T 选项无法起
作用。该项的显示如下所示:
pkcs11_path "/opt/SUNWconn/cryptov2/lib/libvpkcs11.so"
有关更多信息,请参见ikecert(1M) 手册页。有关metaslot 和softtoken 密钥库的信息,请参
见cryptoadm(1M) 手册页。
IKE 公钥数据库和命令