在 Oracle® Solaris 11.2 中确保网络安全

退出打印视图

更新时间: 2014 年 9 月
 
 

如何使用 CA 签名的证书配置 IKEv1

开始之前

您必须成为分配有 "Network IPsec Management"(网络 IPsec 管理)权限配置文件的管理员。有关更多信息,请参见在 Oracle Solaris 11.2 中确保用户和进程的安全 中的使用所指定的管理权限

如果执行远程管理,请参见Example 7–1在 Oracle Solaris 11.2 中管理安全 Shell 访问 中的如何使用安全 Shell 远程管理 ZFS,了解进行安全远程登录的说明。

  1. 使用 ikecert certlocal -kc 命令创建证书签名请求 (certificate signing request, CSR)。

    有关该命令参数的说明,请参见如何使用自签名公钥证书配置 IKEv1 中的Step 1

    # ikecert certlocal -kc -m keysize -t keytype \
    -D dname -A altname
    1. 例如,以下命令会在 partym 系统上创建 CSR:
      # ikecert certlocal -kc -m 2048 -t rsa-sha384 \
      > -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: 
        Proceeding with the signing operation.
        Certificate request generated successfully (…/publickeys/0)
      Finished successfully.
      -----BEGIN CERTIFICATE REQUEST-----
      MIIByjCCATMCAQAwUzELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFEV4YW1wbGVDb21w
      …
      lcM+tw0ThRrfuJX9t/Qa1R/KxRlMA3zckO80mO9X
      -----END CERTIFICATE REQUEST-----
    2. 以下命令会在 enigma 系统上创建 CSR:
      # ikecert certlocal -kc -m 2048 -t rsa-sha384 \
      > -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-----
  2. 将 CSR 提交给 CA。

    CA 可能会告诉您如何提交 CSR。大多数组织具有包含提交表单的 Web 站点。该表单要求证明提交是合法的。通常,您需要将 CSR 粘贴到表单中。组织检查您的请求后,将向您颁发已签名证书。有关更多信息,请参见在 IKE 中使用公钥证书

  3. 将每个证书添加到系统。

    ikecert certdb -a–a 选项将已粘贴的对象添加到系统上的适当证书数据库。有关更多信息,请参见IKE,使用公钥证书

    1. 成为管理员。

      有关更多信息,请参见在 Oracle Solaris 11.2 中确保用户和进程的安全 中的使用所指定的管理权限。如果执行远程管理,请参见Example 7–1在 Oracle Solaris 11.2 中管理安全 Shell 访问 中的如何使用安全 Shell 远程管理 ZFS,了解进行安全远程登录的说明。

    2. 添加从 CA 收到的公钥及其证书。
      # ikecert certdb -a < /tmp/PKIcert.eml
    3. 添加 CA 提供的公共证书。

      您可能还需要添加中间证书。

      # ikecert certdb -a < /tmp/PKIca.eml
    4. 如果 CA 发送了已撤销证书列表,则将 CRL 添加到 certrldb 数据库:
      # ikecert certrldb -a
      Press the Return key
      Paste the CRL
      -----BEGIN CRL-----
      …
      -----END CRL----
      Press the Return key
      Press Control-D
  4. 使用 /etc/inet/ike/config 文件中的 cert_root 关键字标识颁发证书的 CA。

    使用 CA 证书的标识名 (Distinguished Name, DN)。

    1. 例如,partym 系统上 ike/config 文件的显示可能与以下内容类似:
      # Trusted root cert
      # This certificate is from Example CA
      # This is the X.509 distinguished name for the CA's cert 
      
      cert_root "C=US, O=ExampleCA\, Inc., OU=CA-Example, CN=Example CA"
      
      ## Parameters that may also show up in rules.
      
      p1_xform 
       { auth_method rsa_sig oakley_group 1 auth_alg sha384 encr_alg aes}
      p2_pfs 2
      
      {
       label "US-partym to JA-enigma - Example CA"
       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 sha256 encr_alg aes}
      }

      注 -  auth_method 参数的所有变量都必须在同一行上。
    2. enigma 系统上,创建一个类似的文件。

        具体而言,enigma ike/config 文件必须执行以下操作:

      • 包括相同的 cert_root 值。

      • 对于本地参数,使用 enigma 值。

      • 对于远程参数,使用 partym 值。

      • label 关键字创建唯一值。此值必须与远程系统的 label 值不同。

      …
      cert_root "C=US, O=ExampleCA\, Inc., OU=CA-Example, CN=Example CA"
      …
      {
       label "JA-enigma to US-partym - Example CA"
       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
      …
  5. 设置 IKEv1 策略以处理已撤销的证书。

    选择适当的选项:

    • 未提供 OCSP

      如果公钥证书提供一个访问 OCSP 服务器的 URI,但您的系统无法连接到 Internet,请将关键字 ignore_ocsp 添加到 ike/config 文件。

      # Trusted root cert
      …
      cert_root "C=US, O=ExampleCA\, Inc., OU=CA-Example,…
      ignore_ocsp

      ignore_ocsp 关键字会要求 IKEv1 假设此证书有效。

    • 未提供 CRL

      如果 CA 没有提供可靠的 CRL 来源,或者您的系统无法连接到 Internet 检索 CRL,请将关键字 ignore_crls 添加到 ike/config 文件。

      # Trusted root cert
      …
      cert_root "C=US, O=ExampleCA\, Inc., OU=CA-Example,…
      ignore_crls
    • 提供了 CRL 或 OCSP 的 URI

      如果 CA 为已撤销证书提供了中心分发点,则可以修改 ike/config 文件以使用 URI。

      有关示例,请参见如何在 IKEv1 中处理已撤销的证书

示例 10-2  配置 IKEv1 时使用 rsa_encrypt

    ike/config 文件中使用 auth_method rsa_encrypt 时,必须将对等方系统的证书添加到 publickeys 数据库。

  1. 将证书发送给远程系统的管理员。

    可以将证书粘贴到电子邮件中。

    例如,partym 管理员可以发送以下消息:

    To: admin@enigma.ja.example.com
    From: admin@party.us.example.com
    Message: -----BEGIN X509 CERTIFICATE-----
    MII…
    ----END X509 CERTIFICATE-----

    enigma 管理员可以发送以下消息:

    To: admin@party.us.example.com
    From: admin@enigma.ja.example.com
    Message: -----BEGIN X509 CERTIFICATE-----
    MII
    …
    -----END X509 CERTIFICATE-----
  2. 在每个系统上,将通过电子邮件发送的证书添加到本地 publickeys 数据库。

    # ikecert certdb -a < /tmp/saved.cert.eml

RSA 加密的验证方法可防止窃听者知道 IKE 中的标识。由于 rsa_encrypt 方法会隐藏对等方的身份,这导致 IKEv1 无法检索对等方的证书。因此,rsa_encrypt 方法要求 IKEv1 对等方知道彼此的公钥。

    所以,在 /etc/inet/ike/config 文件中使用 rsa_encryptauth_method 时,必须将对等方的证书添加到 publickeys 数据库。添加证书后,publickeys 数据库至少包含每对通信系统的三个证书:

  • 您的公钥证书

  • CA 的证书链

  • 对等方的公钥证书

故障排除-IKEv1 有效负荷(至少包括三个证书)可能变得过大而无法由 rsa_encrypt 加密。诸如 "authorization failed"(授权失败)和 "malformed payload"(有效负荷格式错误)之类的错误,可以指明 rsa_encrypt 方法无法对总有效负荷进行加密。使用仅需要两个证书的方法(如 rsa_sig)来减小有效负荷的大小。

接下来的步骤

如果建立 IPsec 策略未完成,请返回到 IPsec 过程以启用或刷新 IPsec 策略。有关保护 VPN 的 IPsec 策略的示例,请参见使用 IPsec 保护 VPN。有关 IPsec 策略的其他示例,请参见如何使用 IPsec 保护两台服务器之间的网络通信