6.3. 使用原始 RSA 密钥身份验证手动配置 IPsec 主机到主机的 VPN


主机到主机 VPN 在两个设备之间建立直接、安全和加密的连接,允许应用程序通过不安全的网络(如互联网)安全地进行通信。

为进行身份验证,RSA 密钥比预共享密钥(PSK)更安全,因为其非对称加密消除了共享 secret 的风险。使用 RSA 密钥还通过避免对证书颁发机构(CA)的需求来简化部署,同时仍然提供强大的对等身份验证。

在两个主机上执行步骤。

流程

  1. 如果 Libreswan 尚未安装,请执行以下步骤:

    1. 安装 libreswan 软件包:

      # dnf install libreswan
      Copy to Clipboard Toggle word wrap
    2. 初始化网络安全服务(NSS)数据库:

      # ipsec initnss
      Copy to Clipboard Toggle word wrap

      该命令在 /var/lib/ipsec/nss/ 目录中创建数据库。

    3. 启用并启动 ipsec 服务:

      # systemctl enable --now ipsec
      Copy to Clipboard Toggle word wrap
    4. 在防火墙中打开 IPsec 端口和协议:

      # firewall-cmd --permanent --add-service="ipsec"
      # firewall-cmd --reload
      Copy to Clipboard Toggle word wrap
  2. 创建 RSA 密钥对:

    # ipsec newhostkey
    Copy to Clipboard Toggle word wrap

    ipsec 实用程序将密钥对存储在 NSS 数据库中。

  3. 指定您的同级服务器。在 IPsec 隧道中,您必须将一个主机指定为 left,另一个主机指定为 。这是任意选择。常见的做法是调用您 左侧的 本地主机和 远程主机
  4. 在左侧和右侧显示证书密钥属性 ID (CKAID):

    # ipsec showhostkey --list
    < 1> RSA keyid: <key_id> ckaid: <ckaid>
    Copy to Clipboard Toggle word wrap

    下一步需要两个对等点的 CKAID。

  5. 显示公钥:

    1. 在左侧 peer 中,输入:

      # ipsec showhostkey --left --ckaid <ckaid_of_left_peer>
      	# rsakey AwEAAdKCx
      	leftrsasigkey=0sAwEAAdKCxpc9db48cehzQiQD...
      Copy to Clipboard Toggle word wrap
    2. 在右 peer 中,输入:

      # ipsec showhostkey --right --ckaid <ckaid_of_right_peer>
      	# rsakey AwEAAcNWC
      	rightrsasigkey=0sAwEAAcNWCzZO+PR1j8WbO8X...
      Copy to Clipboard Toggle word wrap

    命令会显示公钥,以及必须在配置文件中使用的对应参数。

  6. /etc/ipsec.d/ 目录中为连接创建一个 .conf 文件。例如,使用以下设置创建 /etc/ipsec.d/host-to-host.conf 文件:

    conn <connection_name>
        # General setup and authentication type
        auto=start
        authby=rsasig
    
        # Peer A
        left=<ip_address_or_fqdn_of_left_peer>
        leftid=@peer_a
        leftrsasigkey=<public_key_of_left_peer>
    
        # Peer B
        right=<ip_address_or_fqdn_of_right_peer>
        rightid=@peer_b
        rightrsasigkey=<public_key_of_right_peer>
    Copy to Clipboard Toggle word wrap
    注意

    您可以在两个主机上使用相同的配置文件,Libreswan 使用内部信息在左侧还是右侧主机上运行。但是,务必要确保 left* 参数中的所有值都属于一个 peer,并且 right* 参数中的值属于另一个。

    示例中指定的设置包括:

    conn <connection_name>
    定义连接名称。名称是任意名称,Libreswan 使用它来识别连接。您必须在这个连接中缩进参数,至少使用一个空格或标签页。
    auto=<type>
    控制如何发起连接。如果将值设为 启动,Libreswan 会在服务启动时自动激活连接。
    authby=rsasig
    为此连接启用 RSA 签名身份验证。
    left= &lt;ip_address_or_fqdn_of_left_peer>right= &lt;ip_address_or_fqdn_of_right_peer>
    定义对等点的 IP 地址或 DNS 名称。
    leftid= &lt;id>rightid= &lt;id>
    定义如何在互联网密钥交换(IKE)协商过程中识别每个对等点。这可以是完全限定域名(FQDN)、IP 地址或字面字符串。在后者的情况下,在字符串前面加上 @ 符号。
    leftrsasigkey=<public_key> and rightrsasigkey=<public_key>
    指定对等点的公钥。使用上一步中 ipsec showhostkey 命令显示的值。
  7. 重启 ipsec 服务:

    # systemctl restart ipsec
    Copy to Clipboard Toggle word wrap

    如果您在配置文件中使用 auto=start,则连接会自动激活。使用其他方法时,需要执行额外的步骤来激活连接。详情请查看系统中的 ipsec.conf (5) 手册页。

验证

  • 显示 IPsec 状态:

    # ipsec status
    Copy to Clipboard Toggle word wrap

    如果成功建立连接,输出包含如下行:

    • 互联网密钥交换版本 2 (IKEv2)协商的阶段 1 成功完成:

      000 #1: "<connection_name>":500 STATE_V2_ESTABLISHED_IKE_SA (established IKE SA); REKEY in 27935s; REPLACE in 28610s; newest; idle;
      Copy to Clipboard Toggle word wrap

      安全关联(SA)现在可以协商实际数据加密隧道,称为子 SA 或阶段 2 SA。

    • 已建立了子 SA:

      000 #2: "<connection_name>":500 STATE_V2_ESTABLISHED_CHILD_SA (established Child SA); REKEY in 27671s; REPLACE in 28610s; IKE SA #1; idle;
      Copy to Clipboard Toggle word wrap

      这是您的数据流量通过的实际隧道。

后续步骤

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat