在此过程中,您可以创建一个称作证书对的公钥/私钥和证书。私钥存储于本地证书数据库中的磁盘上,可以使用 ikecert certlocal 命令进行引用。公钥和证书存储在公共证书数据库中。可以使用 ikecert certdb 命令进行引用。您将与对等方系统交换此公共证书。两个证书用于验证 IKEv1 传输。
自签名证书比 CA 颁发的公共证书所需的开销少,但不太易于扩展。不同于 CA 颁发的证书,自签名证书必须由两位交换证书的管理员进行验证。
开始之前
您必须成为分配有 "Network IPsec Management"(网络 IPsec 管理)权限配置文件的管理员。有关更多信息,请参见在 Oracle Solaris 11.2 中确保用户和进程的安全 中的使用所指定的管理权限。
如果执行远程管理,请参见Example 7–1 和在 Oracle Solaris 11.2 中管理安全 Shell 访问 中的如何使用安全 Shell 远程管理 ZFS,了解进行安全远程登录的说明。
有关 ikecert certlocal 命令的参数,请参见 ikecert(1M) 手册页。
# ikecert certlocal -ks -m 2048 -t rsa-sha512 \ -D "O=exampleco, OU=IT, C=US, CN=partym" \ -A IP=192.168.13.213 Creating private key. Certificate added to database. -----BEGIN X509 CERTIFICATE----- MIIC1TCCAb2gAwIBAgIEfdZgKjANBgkqhkiG9w0BAQUFADAaMRgwFgYDVQQDEw9T a...+ zBGi4QkNdI3f -----END X509 CERTIFICATE-----
其中,
创建自签名证书。
指定密钥的大小。
指定要使用的算法类型。
指定证书主题的 X.509 标识名 (distinguished name, DN)。有关示例,请参见在 IKE 中使用公钥证书。
指定证书的替代名称或昵称。altname 的格式为 tag=value。有效标记是 IP、DNS、email 和 DN。
# ikecert certlocal -ks -m 2048 -t rsa-sha512 \ -D "O=exampleco, OU=IT, C=US, CN=enigma" \ -A IP=192.168.116.16 Creating private key. Certificate added to database. -----BEGIN X509 CERTIFICATE----- MIIC1TCCAb2gAwIBAgIEBl5JnjANBgkqhkiG9w0BAQUFADAaMRgwFgYDVQQDEw9T ... y85m6LHJYtC6 -----END X509 CERTIFICATE-----
输出为证书的公共部分的编码版本。您可以安全地将此证书粘贴到电子邮件中。接收方必须在带外验证其是否安装了正确的证书,如Step 4 中所述。
To: admin@enigma.ja.example.com From: admin@party.us.example.com Message: -----BEGIN X509 CERTIFICATE----- MIIC1TCCAb2gAwIBAgIEfdZgKjANBgkqhkiG9w0BAQUFADAaMRgwFgYDVQQDEw9T a...+ zBGi4QkNdI3f -----END X509 CERTIFICATE------
To: admin@party.us.example.com From: admin@enigma.ja.example.com Message: ----BEGIN X509 CERTIFICATE----- MIIC1TCCAb2gAwIBAgIEBl5JnjANBgkqhkiG9w0BAQUFADAaMRgwFgYDVQQDEw9T ... y85m6LHJYtC6 -----END X509 CERTIFICATE-----
# ikecert certdb -a < /tmp/certificate.eml
该命令将导入 BEGIN 与 END 标记之间的文本。
例如,可以致电其他管理员,以验证您拥有的其公共证书的散列是否与仅他们拥有的其私钥证书的散列匹配。
在以下示例中,Note 1 指示了 slot 0 中证书的 distinguished name, DN(标识名)。slot 0 中的私钥具有相同的散列(请参见 Note 3),因此这些证书具有相同的证书对。要使用公共证书,必须具有匹对的证书对。certdb 子命令可列出公共部分,而 certlocal 子命令可列出私密部分。
partym # ikecert certdb -l Certificate Slot Name: 0 Key Type: rsa (Private key in certlocal slot 0) Subject Name: <O=exampleco, OU=IT, C=US, CN=partym>Note 1 Key Size: 2048 Public key hash: 80829EC52FC5BA910F4764076C20FDCF Certificate Slot Name: 1 Key Type: rsa (Private key in certlocal slot 1) Subject Name: <O=exampleco, OU=IT, C=US, CN=Ada> Key Size: 2048 Public key hash: FEA65C5387BBF3B2C8F16C019FEBC388 partym # ikecert certlocal -l Local ID Slot Name: 0 Key Type: rsa Key Size: 2048 Public key hash: 80829EC52FC5BA910F4764076C20FDCFNote 3 Local ID Slot Name: 1 Key Type: rsa-sha512 Key Size: 2048 Public key hash: FEA65C5387BBF3B2C8F16C019FEBC388 Local ID Slot Name: 2 Key Type: rsa Key Size: 2048 Public key hash: 2239A6A127F88EE0CB40F7C24A65B818
此检查操作已验证 partym 系统具有有效的证书对。
您可通过电话读取公钥散列。
将上一步骤中 partym 上 Note 3 的散列与 enigma 上 Note 4 的散列进行比较。
enigma # ikecert certdb -l Certificate Slot Name: 0 Key Type: rsa (Private key in certlocal slot 0) Subject Name: <O=exampleco, OU=IT, C=US, CN=Ada> Key Size: 2048 Public key hash: 2239A6A127F88EE0CB40F7C24A65B818 Certificate Slot Name: 1 Key Type: rsa (Private key in certlocal slot 1) Subject Name: <O=exampleco, OU=IT, C=US, CN=enigma> Key Size: 2048 Public key hash: FEA65C5387BBF3B2C8F16C019FEBC388 Certificate Slot Name: 2 Key Type: rsa (Private key in certlocal slot 2) Subject Name: <O=exampleco, OU=IT, C=US, CN=partym> Key Size: 2048 Public key hash: 80829EC52FC5BA910F4764076C20FDCFNote 4
存储于 enigma 的公共证书数据库中的最后一个证书的公钥散列和主题名称与上一步骤中 partym 的私密证书匹配。
编辑 /etc/inet/ike/config 文件以识别证书。
远程系统的管理员提供 cert_trust、remote_addr 和 remote_id 参数的值。
# Explicitly trust the self-signed certs # that we verified out of band. The local certificate # is implicitly trusted because we have access to the private key. cert_trust "O=exampleco, OU=IT, C=US, CN=enigma" # We could also use the Alternate name of the certificate, # if it was created with one. In this example, the Alternate Name # is in the format of an IP address: # cert_trust "192.168.116.16" ## Parameters that may also show up in rules. p1_xform { auth_method preshared oakley_group 5 auth_alg sha256 encr_alg 3des } p2_pfs 5 { label "US-partym to JA-enigma" local_id_type dn local_id "O=exampleco, OU=IT, C=US, CN=partym" remote_id "O=exampleco, OU=IT, C=US, CN=enigma" local_addr 192.168.13.213 # We could explicitly enter the peer's IP address here, but we don't need # to do this with certificates, so use a wildcard address. The wildcard # allows the remote device to be mobile or behind a NAT box remote_addr 0.0.0.0/0 p1_xform {auth_method rsa_sig oakley_group 2 auth_alg sha256 encr_alg aes} }
对于远程参数,请使用 partym 值。确保本地系统上 label 关键字的值是唯一的。
… { label "JA-enigma to US-partym" local_id_type dn local_id "O=exampleco, OU=IT, C=US, CN=enigma" remote_id "O=exampleco, OU=IT, C=US, CN=partym" local_addr 192.168.116.16 remote_addr 0.0.0.0/0 p1_xform {auth_method rsa_sig oakley_group 2 auth_alg sha256 encr_alg aes} }
partym # svcadm enable ipsec/ike:default enigma # svcadm enable ipsec/ike
接下来的步骤
如果建立 IPsec 策略未完成,请返回到 IPsec 过程以启用或刷新 IPsec 策略。有关保护 VPN 的 IPsec 策略的示例,请参见使用 IPsec 保护 VPN。有关 IPsec 策略的其他示例,请参见如何使用 IPsec 保护两台服务器之间的网络通信。