一、数字证书的相关术语
1.数字签名
数字签名基于哈希算法和公钥加密算法,对明文报文先用哈希算法计算摘要,然后用私钥对摘要进行加密,得到的一段数字串就是原文的数字签名
数字签名与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。
2.数字证书
数字证书是由权威机构发行的,用来证明自己的身份和验证对方的身份
数字签名与数字证书的关系:数字证书包括颁发者、使用者、证书有效期、数字签名等等内容,数字签名只是数字证书里面的其中一项
3.CA证书
CA(Certificate Authority,证书授权中心)负责管理和签发证书的第三方机构
CA证书:顾名思义,就是CA颁发的证书
二、数字证书的验证流程
第一阶段:数字证书的制作
1. 发送方、接收方、CA都生成一对密钥(私钥和公钥)
2. 因为要用CA作为双方信任的机构,所以CA先分发公钥给发送方和接收方
3. 申请证书:发送方发送自己的公钥给CA,CA结合自己的公私钥帮他制作一张证书,接收方也用同样方法申请一张证书
第二阶段:数字证书的验证
1. 发送方和接收方相互发送自己的证书给对方
2. 验证证书是否合法:发送方将最开始CA发给自己的公钥与证书里的公钥进行匹配,如果匹配正确则认为证书合法;接收方也同理
3. 验证是否是你本人:匹配证书的hash算法,数字签名等参数,如果匹配则开始通信
三、基于数字证书认证的IPSec VPN配置
在 IPsec VPN中可以实施三种认证:预共享密钥,加密随机数,数字证书
本实验显示了如何使用CiscoIOS配置CA服务器提供的证书进行阶段一的认证
基本配置:配IP、配路由,保证全网可达(在实验中不用配置CA的路由,以便R1能直接通过下面这条线与R2相连,如果配了可能会走上面的链路)
证书申请步骤:
第一步:同步时间
第二步:部署证书服务器
第三步:客户端申请证书
第四步:CA审核、签名、颁发证书
1. 同步时间
为什么要同步时间:因为证书是有有效期的,如果时间不同步就没用了
方法1:直接设置时间
R1# clock set 1:1:1 1 aug 2016
R2# clock set 1:1:1 1 aug 2016
CA# clock set 1:1:1 1 aug 2016
设置完成后通过show clock验证是否同步
方法2:通过NTP服务器同步时间
1.将CA、R1、R2都设为GMT +8时区:
CA(config)# clock timezone GMT +8
R1(config)# clock timezone GMT +8
R2(config)# clock timezone GMT +8
2.将CA设为NTP Server,并配置R1、R2的NTP Server为CA:
CA(config)# ntp master
R1(config)# ntp server 192.168.1.1
R2(config)# ntp server 192.168.2.1
查看是否同步:show clock
2. 部署证书服务器
1.配置域名,以便其他路由器可以通过URL申请证书
CA(config)# ip http server //激活http服务器
CA(config)# ip domain name abc.com //配置域名
2.生成证书的key(即密钥对,包含公钥和私钥)
crypto key generate rsa general-keys label vpn modulus 1024 exportable storage nvram
(可选)crypto key export rsa vpn pem url nvram: 3des cisco123
说明:
rsa是数据加密算法
label vpn:给这个key起个名字
modulus 1024:设定key的长度,默认是512
exportable表示可以把key导出来
storage nvram:结合exportable,导出到nvram,也可以导出到tftp或flash
可选:这部分可配可不配,作用是给导出的key设置一个密码,增强安全性。其中vpn是key的名称,cisco123是密码
3.配置证书相关参数
crypto pki server ca
issuer-name O=tech CN=CA C=CN
database url nvram:
database level minimum
lifetime ca-certificate 100
lifetime certificate 50
grant auto
no shutdown
show crypto pki server //查看证书服务器状态是否开启
说明:
crypto pki server ca:开启证书服务器,ca是证书服务器名称
issuer-name O=tech CN=CA C=CN:配置颁布者信息(后面都是自定义的),O表示组织,CN表示证书名,C表示国家
database url nvram::指定证书存放在哪里
database level minimum:当用户申请证书时,配置用户的证书存储类型,有三个类型:①minimum:默认配置,仅仅存储证书的基本信息 ②names:除了证书的基本信息,还同时保存每一个证书的序列号和证书标题等附加信息 ③complete:包含前两项信息,还会将证书写入到数据库,需要较大空间,通常使用TFTP存储
lifetime ca-certificate 100:设置CA证书的过期时间(单位为天)
lifetime certificate 50:与上面那条命令不同的是,ca-certificate指的是证书存放在CA服务器里的过期时间,而certificate是证书从CA服务器发送到客户端后,证书存放在客户端里的过期时间,一般ca-certificate的存放时间会比certificate长
grant auto:当客户端申请证书时,自动颁发证书给客户端
no shutdown:激活CA服务器,并设置当客户端申请证书时需要输入的密码
3. 客户端申请证书
1.定义域名,以便可以通过url申请证书:ip domain name r1.com
2.生成公钥和私钥:crypto key generate rsa
3.申请证书:
crypto pki trustpoint abc
enrollment url http://192.168.1.1
subject-name O=tech CN=R1 C=CN
crypto pki authenticate abc
show crypto pki certificates //查看申请到的证书
说明:
crypto pki trustpoint abc:指定信任点(即证书服务器),abc是信任点名称
enrollment url http://192.168.1.1:到哪里去拿证书,这里是与证书服务器相连的接口
subject-name O=tech CN=R1 C=CN:配置证书使用者的信息
crypto pki authenticate abc:从信任点(即证书服务器)请求并下载CA根证书
4. CA审核、签名、颁发证书
说明:以下所有都在客户端上配置
1.将本地生成的公钥数据发送到CA服务器进行验证:crypto pki enroll abc //abc是信任点,期间要输入申请证书时需要输入的密码,分别回答yes,no,yes
2.再次查看自己的证书:show crypto pki certificates //这时会有两个证书,一个是自己的一个是CA颁发的
3.配置IPSec环境
crypto isakmp enable
crypto isakmp policy 10
group 2
authentication rsa-sig
encryption 3des
hash md5
lifetime 86400
crypto ipsec transform-set ccie esp-aes esp-sha-hmac
mode tunnel
access-list 100 permit ip host 1.1.1.1 host 2.2.2.2
crypto map cisco 10 ipsec-isakmp
set peer 192.168.12.1 //注意这里的IP是对端(R2)的接口而不是与CA相连的接口
set transform-set ccie
match address 100
int f0/0 //注意这里的接口是与R2相连的接口不是与CA相连的接口
crypto map cisco
5. 测试
R1# ping 2.2.2.2 source 1.1.1.1
6. 验证
show crypto isakmp sa
show crypto session
show crypto ipsec sa
CA端show
show crypto key mypubkey rsa
CA#show crypto key mypubkey rsa //查看RSA密钥对
% Key pair was generated at: 00:02:15 UTC Mar 1 2002
Key name: CA.mydomain.com
Usage: General Purpose Key
Key is not exportable.
Key Data:
305C300D 06092A86 4886F70D 01010105 00034B00 30480241 00A7EA29 20730330
37689F81 66B6AEA7 FF910154 667379FA 4FD7B175 C38D5D1E 5689B00E 73D55534
9106D651 DA71213D 183E4EAF 448C5F05 F1E8C1FE 47B07D5A 1B020301 0001
% Key pair was generated at: 00:00:12 UTC Mar 1 2002
Key name: CA.mydomain.com.server
Usage: Encryption Key
Key is not exportable.
Key Data:
307C300D 06092A86 4886F70D 01010105 00036B00 30680261 00B637DD E926D12B
9493860C 360E3358 AD09D92A DFEF056A 4D8FE4D8 85830076 44D830BA 61D41D28
6C9E4D68 906100C1 74531D72 2350026A 4789FF03 79F08302 CB9CA3CE 31796F38
070A7498 CFE3F947 3248CD6E E3B35EC9 DB1AE51C 2A4BCBA0 F9020301 0001
% Key pair was generated at: 00:14:38 UTC Mar 1 2002
Key name: CA.abc.com
Usage: General Purpose Key
Key is exportable.
Key Data:
305C300D 06092A86 4886F70D 01010105 00034B00 30480241 00CA843E 03C8B9AC
E20A3F3F 319B7964 79AA4FA6 A98CBC1E 7065EB6F F8C7BFBB 9F0F05C4 AD8185D2
6D0096F0 2202C777 76281F54 D92E028E 890291E4 AD99AC8B 77020301 0001
% Key pair was generated at: 00:15:22 UTC Mar 1 2002
Key name: ca
Usage: General Purpose Key
Key is not exportable.
Key Data:
30819F30 0D06092A 864886F7 0D010101 05000381 8D003081 89028181 00E4792C
DCF1ED84 BB85E4E6 F0A8ACB3 CC2B57B2 F2CB0E44 0648867B B1B196D5 22DB9305
403C3A12 ECAC0663 A88864FD D55E3FF6 96AD7C81 458BB98B D4D4D586 B3DE16A9
3BE2B552 9F544909 E986CF71 E584CC9E C65C829C F43EDB9D C873C02E 262439A6
AC69F2D7 F91DEC04 A798515A FE3FAE94 79AD861D 938A5B93 4CBE3443 01020301 0001
show crypto pki server
CA#show crypto pki server //查看根证书
Certificate Server ca:
Status: enabled //证书状态
Server‘s configuration is locked (enter "shut" to unlock it)
Issuer name: O=tech CN=CA C=CN //证书颁发者
CA cert fingerprint: 6A010819 4B831025 3458B258 2BF646EA
Granting mode is: auto //证书颁发的模式(自动)
Last certificate issued serial number: 0x1
CA certificate expiration timer: 09:03:51 GMT Nov 9 2016 //根证书过期时间
CRL NextUpdate timer: 09:03:52 GMT Aug 8 2016
Current storage dir: nvram: //证书的存储位置
Database Level: Minimum - no cert data written to storage
客户端show
show crypto pki certificates
R1#show crypto pki certificates //查看申请到的证书
CA Certificate
Status: Available //证书状态
Certificate Serial Number: 01 //证书序号
Certificate Usage: Signature //证书用来干什么
Issuer: //证书颁发者信息
o=tech CN\=CA C\=CN
Subject: //证书使用者信息
o=tech CN\=CA C\=CN
Validity Date: //证书有效期
start date: 09:03:51 GMT Aug 1 2016
end date: 09:03:51 GMT Nov 9 2016
Associated Trustpoints: abc.com //证书关联的信任点