PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

说明

      Easy ***使用证书的认证,一个字:难 ,这个难是体现在部署起来比较困难,因为Easy ***相对是给远程用户提供连接的、或者是分支站点,通常是与CA Server不能正常通信的可能性比较大,所以只能通过离线来申请证书,Easy ***的证书部署,是所有***中难点最大的一个,需要注意的地方比较多,虽然,部署起来比较难点,但是,好处还是有的,那就是相对于预共享密钥的方式来说安全的很多,这对于一个需要安全性比较高的企业来说,证书是不二的选择。

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

图花了点时间弄出来的,最近在学画拓扑图, 地址信息根据图上描述的一样, 实现的效果是,IOS和ASA上定义两个group,这两个group给hardware和Software来使用,并且给于不同的策略。CA Server使用的是2003 CA。
一、NTP时间同步
所有设备之间的NTP需要同步

二、RootCA服务器
参考服务器部署的设置,这里省略掉。

三、EZ*** Server申请证书
包括ASA和IOS的EZ*** Server申请证书,离线方式就不介绍了,跟之前的介绍的一模一样,没什么区别,主要体现在软件客户端怎样申请。

http://12.1.1.1/certsrv/mscep/mscep.dll 申请证书之前,可以先打开SCEP的页面,使用一个一次性密码后,就按F5刷新一次。

IOS Server
Router-IOS_server(config)#$generate rsa modulus 2048 label cciese exportable
Router-IOS_server(config)#crypto pki trustpoint IOS
Router-IOS_server(ca-trustpoint)#enrollment url http://12.1.1.1/certsrv/mscep/mscep.dll
Router-IOS_server(ca-trustpoint)#rsakeypair cciese
Router-IOS_server(ca-trustpoint)#subject-name cn=Router-IOS_server.ccie.com, o=ccie, ou=cciese, c=cn

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

下载根证书

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

申请个人证书

ASA Server
Router-ASA-server(config)# crypto key generate rsa label cciese modulus 2048
Router-ASA-server(config)# crypto ca trustpoint ASA
Router-ASA-server(config-ca-trustpoint)# enrollment url http://12.1.1.1/certsrv/mscep/mscep.dll
Router-ASA-server(config-ca-trustpoint)# subject-name cn=ASA_server.ccie.com, o=ccie, ou=cciese, c=cn
Router-ASA-server(config-ca-trustpoint)# keypair cciese
Router-ASA-server(config-ca-trustpoint)# exit

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

申请下载根证书

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

申请个人证书。

四、EZ*** Router-Client申请证书

Router-Client(config)#crypto key generate rsa modulus 2048 label cciese exportable
Router-Client(config)#crypto pki trustpoint Router-Client
Router-Client(ca-trustpoint)#enrollment url http://12.1.1.1/certsrv/mscep/mscep.dll
Router-Client(ca-trustpoint)#subject-name cn=Hardware.ccie.com, o=ccie, ou=cciese, c=cn
Router-Client(ca-trustpoint)#rsakeypair cciese
Router-Client(ca-trustpoint)#revocation-check none

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

申请下载根证书

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

申请个人证书

这里已经申请了三张证书,分别是IOS Server、ASA Server和硬件Router-Client的证书,在Router-Client上对CRL的检查关闭,因为远程访问的***一般对于CA服务器的访问可能性比较小。

另外一个非常关键的地方:就是Router-Client的OU必须等于 EZ*** Server上的group name,因为在验证的时候,它会以OU来作为group进行匹配。

五、服务器颁发证书

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

全选——-右击—–颁发即可

六、Software Router-Client离线申请根证书
关于软件离线申请证书,是EZ***里面最讲究的,如果顺序错误了,那么认证就会失败。

1、产生申请的信息

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

点击Enroll

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

Online是在线通过SCEP获取证书,通常在实际工作中,离线申请比较多,所以选择 File—–注意这里File encoding:为Base-64,Next

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

其中,CN和OU必选, OU是非常关键的,它就相当于group的name,这里为cciers,那么在Server上就必须创建一个group为cciers,然后点击 Enroll

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

它提示,这个文件保存在这个软件的安装目录下,需要到这个目录下找到这个文件。

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

通过记事本或者写字板打开这个文件

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

以邮件或者QQ传给CA 管理员

在CA Server上,输入http://12.1.1.1/certsrv/

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

进入证书页面后,先下载根证书,下载一个CA证书

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

以Base 64形式保存到本地,建议修改一个名字,比如 Root,然后返回主页

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

申请一个证书————-高级证书申请————使用Base 64——–输入软件客户端生成的PKCS#10的文本。

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】
PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

提交即可

进入——证书颁发机构———–挂机的申请———颁发这个证书

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

查看挂起的证书申请

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

以Based 64格式保存到本地,名字最好区分以下。

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

桌面就有两个证书了,一个是根证书,另外一个是Software Router-Client的个人证书,这时候需要通过邮件或者QQ的形式发送给申请者。

这两张证书一定要放在软件客户端的 C:\Program Files\Cisco Systems\*** Router-Client\Certificates 这个目录文件下,路径根据自己安装定义的盘符选择。

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

把申请的两个证书放入指定的目录下

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

点击import开始导入证书,先导入根证书———-然后个人证书——–顺序不能错误,否则证书会无效

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

这时候store已经变为可用状态了,之前为Request状态。

***配置

IOS Server
Router-IOS_server(config)#crypto isakmp policy 10
Router-IOS_server(config-isakmp)#group 2
Router-IOS_server(config-isakmp)#encryption 3des
Router-IOS_server(config-isakmp)#exit

Router-IOS_server(config)#crypto isakmp identity dn
这句话非常重要,因为默认情况下,IOS是以hostname来检查的。在EZ***下面必须以DN,因为要使用OU来匹配group
Router-IOS_server(config)#crypto isakmp Router-Client configuration group cciese
Router-IOS_server(config-isakmp-group)#save-password

Router-IOS_server(config)#ip local pool ippool 123.1.1.1 123.1.1.254
Router-IOS_server(config)#ip access-list extended split
Router-IOS_server(config-ext-nacl)#permit ip 192.168.1.0 0.0.0.255 any
Router-IOS_server(config-ext-nacl)#exit

Router-IOS_server(config)#crypto isakmp Router-Client configuration group cciers
Router-IOS_server(config-isakmp-group)#acl split
Router-IOS_server(config-isakmp-group)#pool ippool
Router-IOS_server(config-isakmp-group)#exit

Router-IOS_server(config)#aaa new-model n
Router-IOS_server(config)#aaa authentication login auth local
Router-IOS_server(config)#aaa authorization network auth local
Router-IOS_server(config)#username admin password cciese

Router-IOS_server(config)#crypto isakmp profile hardware
% A profile is deemed incomplete until it has match identity statements
Router-IOS_server(conf-isa-prof)#match identity group cciese
Router-IOS_server(conf-isa-prof)#Router-Client configuration address respond
Router-IOS_server(conf-isa-prof)#Router-Client authentication list auth
Router-IOS_server(conf-isa-prof)#isakmp authorization list auth
Router-IOS_server(conf-isa-prof)#virtual-template 100

Router-IOS_server(config)#crypto isakmp profile software
% A profile is deemed incomplete until it has match identity statements
Router-IOS_server(conf-isa-prof)#match identity group cciers
Router-IOS_server(conf-isa-prof)#Router-Client configuration address respond
Router-IOS_server(conf-isa-prof)#Router-Client authentication list auth
Router-IOS_server(conf-isa-prof)#isakmp authorization list auth
Router-IOS_server(conf-isa-prof)#virtual-template 101

Router-IOS_server(config)#crypto ipsec transform-set trans esp-des esp-md5-hmac

Router-IOS_server(config)#crypto ipsec profile hardware
Router-IOS_server(ipsec-profile)#set isakmp-profile hardware
Router-IOS_server(ipsec-profile)#set transform-set trans
Router-IOS_server(ipsec-profile)#exit

Router-IOS_server(config)#crypto ipsec profile software
Router-IOS_server(ipsec-profile)#set isakmp-profile software
Router-IOS_server(ipsec-profile)#set transform-set trans

Router-IOS_server(config)#interface virtual-template 100 type tunnel
Router-IOS_server(config-if)#ip unnumbered f0/0
Router-IOS_server(config-if)#tunnel mode ipsec ipv4
Router-IOS_server(config-if)#tunnel protection ipsec profile hardware
Router-IOS_server(config-if)#exit

Router-IOS_server(config)#interface virtual-template 101 type tunnel
Router-IOS_server(config-if)#tunnel mode ipsec ipv4
Router-IOS_server(config-if)#ip unnumbered f0/0
Router-IOS_server(config-if)#tunnel protection ipsec profile software
Router-IOS_server(config-if)#exit

在IOS-Server上定义了两个group,一个是关于硬件Router-Client CCIESE的,一个是关于软件Router-Client cciers的,一个推送了地址池,一个没有推送。

定义了两个ipsec profile,一个给hardware 用,一个给Software用,其实这里不需要定义,用一个即可,因为isakmp profile已经关联了虚拟模板了。

定义了两个类型Tunnel的虚拟模板,没有定义任何的源和目,这个之前介绍过了,当一个***拨入上来,它会以对端的源作为目的,目的作为源自动添加到虚拟接口上,因为虚拟接口是继承虚拟模板的配置的。

ASA的配置

Router-ASA-server(config)# crypto isakmp policy 10
Router-ASA-server(config-isakmp-policy)# authentication rsa-sig
Router-ASA-server(config-isakmp-policy)# group 2
Router-ASA-server(config-isakmp-policy)# encryption 3des
Router-ASA-server(config-isakmp-policy)# group 2
Router-ASA-server(config-isakmp-policy)# hash sha
Router-ASA-server(config-isakmp-policy)# lifetime 86400

Router-ASA-server(config)# crypto isakmp enable outside

Router-ASA-server(config)# ip local pool cciese 111.1.1.100-111.1.1.200
Router-ASA-server(config)# ip local pool cciers 121.1.1.100-121.1.1.200

Router-ASA-server(config)# username admin password cciese

Router-ASA-server(config)# tunnel-group cciese type remote-access
Router-ASA-server(config)# tunnel-group cciese general-attributes
Router-ASA-server(config-tunnel-general)# address-pool cciese
Router-ASA-server(config)# tunnel-group cciese ipsec-attributes
Router-ASA-server(config-tunnel-ipsec)# trust-point ASA

Router-ASA-server(config)# tunnel-group cciers type remote-access
Router-ASA-server(config)# tunnel-group cciers general-attributes
Router-ASA-server(config-tunnel-general)# address-pool cciers
Router-ASA-server(config)# tunnel-group cciers ipsec-attributes
Router-ASA-server(config-tunnel-ipsec)# trust-point ASA

Router-ASA-server(config)# crypto ipsec transform-set trans esp-des esp-md5-hmac

Router-ASA-server(config)# crypto dynamic-map ez*** 1000 set transform-set trans
Router-ASA-server(config)# crypto map asa 1000 ipsec-isakmp dynamic ez***
Router-ASA-server(config)# crypto map asa interface outside

同样的,ASA上也创建了两个Tunnel group,分配不同的地址池,注意在Tunnel-group下要定义信任点

Router-Client端测试

软件
定义一些参数,平常我们使用的是group Authentication,这次证书认证使用Certificate Authentication,选中之前申请的信息的名字,作为认证的凭据。 Send CA Certificate Chain :这个需要在层次化的PKI设计中才会使用。

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

对应的定义了两个,一个用于连接IOS,一个用于连接ASA, 如果连接IOS获取的地址是123.1.1.0网段的, ASA获取的是121.1.1.0网段的,那么就表示整个EZ***是正确配置的。

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

当连接ASA的时候,获取的是121.1.1.100

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

连接IOS的时候,分配的是123.1.1.1 ,并且有隧道分割

虚拟接口自动Up了, 查看虚拟接口继承的配置,source 12.1.1.2 (就是Router-Client定义的目的), destination 12.1.1.5 (就是Router-Client的源地址),其余的都继承虚拟模板的。 如果,想对PC的流量进行统一化的管理,那么这时候可以不做隧道分割,可以在虚拟模板启用NAT,这样,所有的流量都必须经过总部才能出去。

硬件Router-Client测试
Router-Client(config)#crypto ipsec Router-Client ez*** hardware-ios
Router-Client(config-crypto-ez***)#peer 12.1.1.2
Router-Client(config-crypto-ez***)#username admin password cciese
Router-Client(config-crypto-ez***)#connect auto
Router-Client(config-crypto-ez***)#mode network-extension
Router-Client(config-crypto-ez***)#exit

Router-Client(config)#interface f0/0
Router-Client(config-if)#crypto ipsec Router-Client ez*** hardware-ios outside

Router-Client(config-if)#int lo 0
Router-Client(config-if)#ip add 1.1.1.1 255.25
Router-Client(config-if)#ip add 1.1.1.1 255.255.255.255
Router-Client(config-if)#crypto ipsec Router-Client ez*** hardware-ios inside

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

开始自动拨号,并且成功。

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

隧道接口已经up了,并且虚拟接口继承虚拟模板的配置。

这时候可以启用动态路协议了。
Router-IOS_server(config)#interface virtual-template 100 type tunnel
Router-IOS_server(config-if)#ip ospf 1 area 0
Router-Client(config)#interface virtual-template 1 type tunnel
Router-Client(config-if)#ip unnumbered f0/0
Router-Client(config-if)#ip ospf 1 area 0

Router-Client(config)#crypto ipsec Router-Client ez*** hardware-ios
Router-Client(config-crypto-ez***)#virtual-interface 1

这时候重新拨入***。

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

拨入成功,并且OSPF的邻居已经建立。

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

连接ASA Server
在连接ASA之前,必须把之前的配置都No掉,关于之前定一个的IOS的组。
Router-Client(config)#crypto ipsec Router-Client ez*** hardware-asa
Router-Client(config-crypto-ez***)#pe
Router-Client(config-crypto-ez***)#peer 12.1.1.3
Router-Client(config-crypto-ez***)#exit
Router-Client(config)#int f0/0
Router-Client(config-if)#cry
Router-Client(config-if)#crypto ipsec Router-Client ez*** hardware-asa outside
Router-Client(config-if)#int lo 0
Router-Client(config-if)#crypto ipsec Router-Client ez*** hardware-asa inside

如果两个组都存在的话,那么第一个定义的有效,并且会一直提示,关于no掉配置有个很关键的地方,先要把组关联的virtual-interface 给no掉,否则话,这个组它提示正在使用can’t delete
More than one active tunnel exists. Please specify the name of tunnel

PKI系列:(5)证书下的Easy ***【远程访问 硬件与软件拨号】

已经成功拨入ASA了,并且获取了地址信息。

至此,EZ***的证书认证全部完成。

总结:关于EZ*** PKI的部署,难点在于Router-Client的离线申请证书,顺序一定不能错误, 并且时间要保持一致,否则PKI系统无法正常运行。 最后剩下SSL ***了,SSL ***会介绍一个非常适用的技术,LDAP,工程中用的比较多的。

本文首发于公众号:网络之路博客

上一篇:curl调用流程


下一篇:UVA12170 Easy Climb