我们配置的是从预共享密钥IKEv2身份验证切换为使用数字证书的身份验证。名为SERVER的路由器具有另外两个功能:时间服务器和CA服务器。

切换前配置步骤

更改以前的配置,使路由器ROUTER-A和ROUTER-B使用数字证书,放弃预共享密钥。首先在所有路由器上进行基本配置,以便建立CA服务器并检索数字证书。

CA服务器

!
hostname SERVER
!
interface f0/0
ip address 10.2.2.2 255.255.255.0
no shutdown
!
ip route 0.0.0.0 0.0.0.0 10.2.2.1
!
ntp master
!

在生产环境中,我们将确保时间准确无误,但是对于我们的实验室来说,这样做是可以做到的。路由器同意正确的时间很重要,这与现在的时间无关。

ROUTER-A

!
hostname ROUTER-A
!
interface FastEthernet0/0
ip address 10.1.1.1 255.255.255.0
no shutdown
!
interface Serial5/0
ip address 1.1.1.1 255.255.255.0
no shutdown
!
ip route 0.0.0.0 0.0.0.0 1.1.1.2
!
ntp server 10.2.2.2
!

ROUTER-B

!
hostname ROUTER-B
!
interface FastEthernet0/0
ip address 10.2.2.1 255.255.255.0
no shutdown
!
interface Serial5/0
ip address 1.1.1.2 255.255.255.0
no shutdown
!
ip route 0.0.0.0 0.0.0.0 1.1.1.1
!
ntp server 10.2.2.2
!

PC路由器具有最简单的配置:

!
hostname PC
!
interface FastEthernet0/0
ip address 10.1.1.2 255.255.255.0
no shutdown
!
ip route 0.0.0.0 0.0.0.0 10.1.1.1
!

现在验证我们的连通性。我们可以验证ROUTER-A和ROUTER-B上的时间同步。如果可以,我们可以继续。例如,ROUTER-A:

ROUTER_A#
ROUTER_A#show ntp ass

address     ref clock    st  when  poll reach delay offset  disp
*~10.2.2.2    127.127.7.1   8  118  1024  377 12.103 -59951. 0.070
* sys.peer, # selected, + candidate, – outlyer, x falseticker, ~ configured
ROUTER_A#

我们可以看到我们处于同步状态,因此我们可以继续配置。

生成证书

现在,让我们再次关注SERVER并生成用于此CA将使用的数字证书的RSA密钥对:

cry key gen rsa gen lab CA_SERVER mod 2048

我们给该密钥对命名为CA_SERVER,并且希望密钥的长度为2048位。接下来,我们使用最小设置创建CA授权:

crypto pki server CA_SERVER
issuer-name CN=Popravak Root CA
grant auto
no shutdown

我们给该CA取了一个名字,并确保它在没有任何干预的情况下签发证书。最后,我们激活此CA。在继续之前,我们需要确保已激活CA上的HTTP服务器,因为客户端在与CA进行通信时将使用HTTP协议:

!
ip http server
!

这是我们CA服务器的非常基本的设置。现在,让我们拜访我们的朋友ROUTER-A。我们还需要此路由器上的RSA密钥对以获取将由我们的CA服务器颁发的证书:

给Router-A颁发证书

cry key gen rsa gen lab ROUTER_A_CA mod 2048

现在我们创建信任点。它是描述我们与证书颁发机构的通信的结构。在我们的情况下:

crypto pki trustpoint ROUTER_A_CA
enrollment url http://10.2.2.2:80
subject-name CN=ROUTER_A.popravak.local, O=Popravak Inc
revocation-check none
rsakeypair ROUTER_A_CA

我们为该信任点指定了名称,并指定了将用于证书请求和检索的URL。我们还说明了要在证书中编码的信息。这以x509形式给出,我们只需要路由器的FQDN(CN或Common Name字段)和组织名称(O字段)。我们不想检查证书是否被CA标记为吊销,因为这是一个实验室环境。最后,我们指定生成的RSA密钥对。

现在,需要完成两件事。首先,我们必须向CA进行**身份验证。**这基本上意味着我们连接到CA并检索其证书。

cry pki authenticate ROUTER_A_CA

我们期盼:

Trustpoint CA certificate accepted.

一旦获得CA证书和公钥,我们就可以注册该CA。这是一种很好的说法,我们希望该CA向我们颁发证书:

cry pki enroll ROUTER_A_CA

这是我们想要看到的:

%PKI-6-CERTRET: Certificate received from Certificate Authority

现在,我们具有从预共享密钥身份验证切换到基于证书的身份验证所需的全部功能。当然,对于路由器ROUTER-A。这些确切步骤也需要在ROUTER-B上执行。除了到目前为止我们在ROUTER-B上键入的内容之外,我们还总结一下获得证书所需的步骤:

给Router-B颁发证书

!
cry key gen rsa gen lab ROUTER_B_CA mod 2048
!
crypto pki trustpoint ROUTER_B_CA
enrollment url http://10.2.2.2:80
subject-name CN=ROUTER_B.popravak.local, O=Popravak Inc
revocation-check none
rsakeypair ROUTER_B_CA
!
cry pki authenticate ROUTER_B_CA
!
cry pki enroll ROUTER_B_CA
!

我们已经到达VPN设置部分。最后

更改IKEv2设置

在更改IKEv2设置之前,让我们看一下旧的IKEv2配置文件:

旧的IKEv2配置文件

crypto ikev2 profile IKEv2_PROFILE
match identity remote address 1.1.1.2 255.255.255.255
identity local address 1.1.1.1
authentication remote pre-share
authentication local pre-share
keyring local IKEv2_KEYRING

如果远程对等方使用IP地址1.1.1.2标识自己,我们将使用IP地址1.1.1.1,双方都使用预共享密钥进行身份验证,并且这些密钥存储在指定的密钥环中,则将触发此IKEv2配置文件。在更改此配置文件之前,让我们首先创建IKEv2提议。我们回到ROUTER-A。

crypto ikev2 proposal IKEv2_PROPOSAL
encryption aes-cbc-256 aes-cbc-192 3des
integrity sha512 sha256 md5
group 14 5 2

然后policy:

crypto ikev2 policy IKEv2_POLICY
proposal IKEv2_PROPOSAL

和pki:

crypto pki certificate map IDENTITY_MAP 10
subject-name co o = popravak inc

最后

IKEv2新配置文件

crypto ikev2 profile IKEv2_PROFILE
match certificate IDENTITY_MAP
identity local dn
authentication remote rsa-sig
authentication local rsa-sig
pki trustpoint ROUTER_A_CA

现在,如果我们收到与证书映射中指定的内容匹配的证书,则将使用此配置文件。我们使用证书来标识自己,并且双方现在都使用rsa-sig类型的身份验证,即数字证书的身份验证。我们还列出了我们要使用的信任点。我们的证书映射现在用于触发配置文件。因此,如果满足证书映射要求,我们的个人资料将触发,并且我们仅希望证书包含我们组织的名称。基本上,如果我们收到组织名称为“ Popravak Inc ”的证书,则将使用此证书。

ROUTER-A上的IPsec设置保持不变:

!
crypto ipsec transform-set IPSEC_TRANSFORM1 esp-aes 256 esp-sha512-hmac
mode tunnel
!
crypto ipsec profile IPSEC_PROFILE
set transform-set IPSEC_TRANSFORM1
set ikev2-profile IKEv2_PROFILE
!

现在,我们准备通过配置隧道接口并完成路由来完成ROUTER-A配置:

interface Tunnel0
description === SVTI INTERFACE ===
ip address 192.168.12.1 255.255.255.0
ip mtu 1400
ip tcp adjust-mss 1360
tunnel source Serial5/0
tunnel mode ipsec ipv4
tunnel destination 1.1.1.2
tunnel protection ipsec profile IPSEC_PROFILE
!
ip route 10.2.2.0 255.255.255.0 Tunnel0

到目前为止,我们一直在准备ROUTER-A。ROUTER-B上有类似的配置:

crypto ikev2 proposal IKEv2_PROPOSAL
encryption aes-cbc-256 aes-cbc-192 3des
integrity sha512 sha256 md5
group 14 5 2
!
crypto ikev2 policy IKEv2_POLICY
proposal IKEv2_PROPOSAL
!
crypto pki certificate map IDENTITY_MAP 10
subject-name co o = popravak inc
!
crypto ikev2 profile IKEv2_PROFILE
match certificate IDENTITY_MAP
identity local dn
authentication remote rsa-sig
authentication local rsa-sig
pki trustpoint ROUTER_B_CA
!
crypto ipsec transform-set IPSEC_TRANSFORM1 esp-aes 256 esp-sha512-hmac
mode tunnel
!
crypto ipsec profile IPSEC_PROFILE
set transform-set IPSEC_TRANSFORM1
set ikev2-profile IKEv2_PROFILE
!
interface Tunnel0
description === SVTI INTERFACE ===
ip address 192.168.12.2 255.255.255.0
ip mtu 1400
ip tcp adjust-mss 1360
tunnel source Serial5/0
tunnel mode ipsec ipv4
tunnel destination 1.1.1.1
tunnel protection ipsec profile IPSEC_PROFILE
!
ip route 10.1.1.0 255.255.255.0 Tunnel0

隧道启动后,我们可以验证对等方确实已使用数字证书进行了身份验证:

ROUTER_A#
ROUTER_A#show cry ikev2 sa
IPv4 Crypto IKEv2 SA

Tunnel-id Local         Remote        fvrf/ivrf      Status
1     1.1.1.1/500      1.1.1.2/500      none/none      READY
Encr: AES-CBC, keysize: 256, Hash: SHA512, DH Grp:14, Auth sign: RSA, Auth verify: RSA
Life/Active Time: 86400/27741 sec

IPv6 Crypto IKEv2 SA

ROUTER_A#

最后的想法可能与IPSec无关。路由器接口下的命令是“ no ip route-cache ”。如果没有此命令,则不会通过隧道转发任何流量。这可能与dynamips平台上的IOS映像有关。但是我很确定这不会成为问题。