SCEP方式,实验分为两步:
一、配置IOS的CA:九个步骤
1、产生和导出RSA密钥信息(可选的)
用途:CA需要RSA密钥对来产生一个根证书上的签名和验证。
可以在CA配置过程中自动产生,但是有两个局限:
第一是不可以导出密钥,除非在IOS 12.3(11)T的版本。第二是固定的1024位密钥长度。
为导出密钥到安全位置,常使用手动产生密钥对,并标记为可以导出。
手动产生密钥命令语法:
conf t
cry key generate rsa general-keys label CA-name exportable
(产生密钥,标记名,定义为可导出)
cry key export rsa CA-name pem url tftp://192.168.1.99/CA-name des cisco123
(导出到TFTP服务器,使用DES加密该密钥,设置密码为cisco123,在导入的时候要使用该密码,否则密钥失效)
cry key import rsa CA-name2 pem url tftp://192.168.1.99/CA-name des [exportable] cisco123
这个语法不是错误的,这里有个小方法,用来保护密钥对:将CA-name的密钥对导入到路由器上,并且重新指定为CA-name2,这里有个可选项[exportable] ,如果不选择,则CA-name2将不可导出,即使你拥有路由器15级的权限。接着要做的是这样:
cry key zeroize rsa CA-name(删除原来的,可导出的密钥对)
如果保存在NVRAM中,则拷贝到安全的带外区域,并删除NVRAM中的密钥对(见TFTP语法),现在,即使CA路由器受到灾难,天下是太平的,你可以随时恢复你的CA架构。
2、启动CA(必需的)
简单的配置只需要三个命令
conf t
ip http server
cry pki server CA-name(此时进入子模式)
no shut(如果没有手动产生的密钥可以匹配,将自动产生密钥对,在自动产生密钥方式中,可以通过database archive 指定PKCS12或PEM的文件格式,默认为PKCS12 )
CA发起后,默认在NVRAM中产生三个文件,.ser,申请数据库,含有被路由器CA颁发的身份证书;.p12或PEM,含有加密的公钥和私钥;.crl 含有CRL。
3、定义额外的CA参数(可选的)
conf t
crypto pki server R2(进入子模式)
这里有很多重要的参数建议配置,否则管理是困难的
database level[minimal/names/complete]:
默认为minimal,只存储最小的信息来保证证书是唯一的;
如:db_version = 1
last_serial = 0x2
names,证书的序列号和名字存储在.SER中,使得证书的发现和吊销特别容易
complete:保存了完整内容在数据库中,真正的仿真了真实的CA产品要做的事情。
database username deng pass deng
(此命令允许对数据库文件.ser的访问权限)
lifetime enrollment-request
以小时计,一个请求允许保留在数据库中的时间,默认为一个星期,可扩展到1000小时
grant [none/auto/ra-auto]
当用SCEP发起一个证书请求,则以初始状态添加到申请数据库中,被分配给一个唯一的请求ID号。如配置为NONE,客户端收到一个挂起的回应,CA管理员需要登陆到CA,批准或者拒绝这个请求;如配置为AUTO,给用户提供一个正确的口令,请求被允许,否则拒绝。如未批准,则在lifetime enrollment-request期满后从申请数据库中清除。
lifetime certificate
颁发给客户的证书有效时间,默认为一年,范围是1-1825天
4、处理申请请求(必需的)
注意这里的命令都在特权模式下完成
cryp pki server R2 info request
查看请求信息
cry pki server R2 remove{all/reqid}
这个命令和拒绝是不同的,用来清除相同的请求信息的老的请求信息,因为CA是不检查老的请求信息的,相反,它只接受新的请求信息
cry pki server R2 grant{all/reqid}
允许一个请求ID或是允许ALL,执行此命令会建立两个文件 (.crt 、.cnm)在datebase url指定的位置,.crt 包含实际的客户身份证书,.cnm包含证书的描述。一旦证书被下载,CA清除申请数据库中的条目。如未批准,则在lifetime enrollment-request期满后从申请数据库中清除。
cry pki server R2 reject{all/reqid}
拒绝一个请求ID或是允许ALL
cry pki server R2 password generate
1-1440分钟,默认是一个小时,提供一个随机口令来保护证书请求,客户在下载自己的证书的时候需要匹配这个密码
cry pki server R2 requst pkcs10{tftp://192.168.1.99/R1.req}
用于不支持SCEP的情况,执行手动申请过程。在客户端建立一个PKCS10文件,CA导入这个文件来产生客户证书。必须满足两个条件:第一是TFTP可达,第二是客户文件存在
5、吊销身份证书
cry pki server R2 revoke {cert-id}
执行这个命令将产生CRL条目,用cry pki server R2 info crl可检查CRL列表。
6、建立IOS RA
有一个局限:CA也必须是IOS的路由器
RA的执行过程:当收到申请请求(手动或是SCEP),RA可以基于策略批准或拒绝该请求,一旦批准,请求被转发到CA,CA产生身份证书,交给RA,请求者联系RA得到证书。
RA的功能:负责记录或者核实请求信息,验证现有证书。RA不能产生身份证书,也不能吊销身份证书。
建立RA只需要完成两步:第一是向CA登记,第二是定义自己为RA
配置示例:
conf t
向CA登记
cry key generate rsa
cry pki trustpoint R2(必需的,定义CA)
enrollment url http://R2(必需的,定义如何和CA交互)
subject-name cn=R1 ou=ios RA o=cisco c=china(可选的,标识自己为RA)
exit
定义自己为RA
cryp pki server R1
mode RA
grant ra-auto
no shut
不必要使用cryp ca authentucate来申请根证书,也不必要使用cry ca enroll来申请自己的身份证书,当建立自己为RA后,将自动完成这个过程。
7、备份CA
应当经常备份的文件:
ser
crl
p12
这是CA在NO SHUT后产生的三个文件
cer,保存着CA的根证书
crt
cnm
这是批准请求后产生的客户端证书和信息
run config
现在的配置文件
8、恢复CA
利用备份的文件来恢复CA是很简单的
三步:
拷贝备份文件到路由器
导入RSA密钥对
重新配置和发起CA
始终记得,如果没有备份文件的话,要恢复CA是不可能的
9、清除CA服务
只需要一条命令,CA信任点、CA证书、CA RSA密钥对都会被自动清除
conf t
no cry pki server R2
二、客户端和CA的交互,得到CA根证书和客户端自己的证书(公钥)
CA配置如下:
R2#sh run
Building configuration...
Current configuration : 1981 bytes
!
version 12.4 [IOS 12.3(4)T以上]
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R2
!
boot-start-marker
boot-end-marker
no aaa new-model
ip cef
ip host R1 10.1.1.251(建立静态的DNS和客户端解析)
!
multilink bundle-name authenticated
crypto pki server R2
!
crypto pki trustpoint R2
revocation-check crl
rsakeypair R2
crypto pki certificate chain R2
(此为手动产生,可选项,如没有手动产生,在NO SH PKI SERVER后会自动产生CA的密钥对)
certificate ca 01
3082016E 30820118 A0030201 02020101 300D0609 2A864886 F70D0101 04050030
0D310B30 09060355 04031302 5232301E 170D3037 31323031 31393430 35335A17
0D313031 31333031 39343035 335A300D 310B3009 06035504 03130252 32305C30
0D06092A 864886F7 0D010101 0500034B 00304802 4100EE85 31585998 CAB38D17
CD4360B6 9DD055CD D7DA0A4A 8574587C 8BDCB365 11C434E1 76BD24C1 23E86E47
2F214FF7 7183A1D0 519AC322 4D2859B5 4E9E0112 30BF0203 010001A3 63306130
0F060355 1D130101 FF040530 030101FF 300E0603 551D0F01 01FF0404 03020186
301F0603 551D2304 18301680 141CE2C5 956E04EF 8C7B047A E231B77C B664BF4B
51301D06 03551D0E 04160414 1CE2C595 6E04EF8C 7B047AE2 31B77CB6 64BF4B51
300D0609 2A864886 F70D0101 04050003 4100E515 1A67B01B 58804460 CEBA5FA6
3AEB54FD B543C0AC C2810375 4F60D77C 7771588B 518B3695 5668CAA3 EED6A3D0
481DD32C 58B43652 F2004784 8F415967 3061
quit
interface FastEthernet0/0
ip address 10.1.1.252 255.255.255.0(此为必须的,要可达客户端)
duplex half
!
ip http server(此为必须的,为SCEP准备)
no ip http secure-server
logging alarm informational
control-plane
gatekeeper
shutdown
line con 0
exec-timeout 0 0
stopbits 1
line aux 0
stopbits 1
line vty 0 4
end
客户端配置如下:
R1#sh run
Building configuration...
Current configuration : 2940 bytes
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R1(必须的)
!
boot-start-marker
boot-end-marker
no aaa new-model
ip cef
ip domain name cisco.com(必需的)
ip host R2 10.1.1.252(必需的,静态DNS交互CA SERVER)
multilink bundle-name authenticated
crypto pki trustpoint R2(必需的)
enrollment url http://R2:80(必需的,通过HTTP方式在CA SERVER下载根证书和自己的身份证书)
serial-number
revocation-check crl
crypto pki certificate chain R2
certificate 02(R1的身份证书)
3082017D 30820127 A0030201 02020102 300D0609 2A864886 F70D0101 04050030
0D310B30 09060355 04031302 5232301E 170D3037 31323031 32303431 35395A17
0D303831 31333032 30343135 395A3030 312E3011 06035504 05130A34 32393439
36373239 35301906 092A8648 86F70D01 0902160C 52312E63 6973636F 2E636F6D
305C300D 06092A86 4886F70D 01010105 00034B00 30480241 00B3A9FD B6399101
6D2E82B3 6760E279 E87A8638 66A4F2C5 BBCEDC7B 455E18DD 529D3C9D 833E6994
61329933 7D23223C 73DFBD87 859A383B 00B2D76D 450EDA08 79020301 0001A34F
304D300B 0603551D 0F040403 0205A030 1F060355 1D230418 30168014 1CE2C595
6E04EF8C 7B047AE2 31B77CB6 64BF4B51 301D0603 551D0E04 16041497 13743F07
FF1710C9 E638B077 B0E5C18E 44665E30 0D06092A 864886F7 0D010104 05000341
00ED4697 41F4CD60 2156268C 76EE525D 65C5DC36 B74E54E3 746176D2 426B0B1B
02C1EA85 C637F8F5 458FD766 B6A0F7A1 7E7DECFF BEBCDE6B D7FEA60D D47D5106 F1
quit
certificate ca 01(CA根证书)
3082016E 30820118 A0030201 02020101 300D0609 2A864886 F70D0101 04050030
0D310B30 09060355 04031302 5232301E 170D3037 31323031 31393430 35335A17
0D313031 31333031 39343035 335A300D 310B3009 06035504 03130252 32305C30
0D06092A 864886F7 0D010101 0500034B 00304802 4100EE85 31585998 CAB38D17
CD4360B6 9DD055CD D7DA0A4A 8574587C 8BDCB365 11C434E1 76BD24C1 23E86E47
2F214FF7 7183A1D0 519AC322 4D2859B5 4E9E0112 30BF0203 010001A3 63306130
0F060355 1D130101 FF040530 030101FF 300E0603 551D0F01 01FF0404 03020186
301F0603 551D2304 18301680 141CE2C5 956E04EF 8C7B047A E231B77C B664BF4B
51301D06 03551D0E 04160414 1CE2C595 6E04EF8C 7B047AE2 31B77CB6 64BF4B51
300D0609 2A864886 F70D0101 04050003 4100E515 1A67B01B 58804460 CEBA5FA6
3AEB54FD B543C0AC C2810375 4F60D77C 7771588B 518B3695 5668CAA3 EED6A3D0
481DD32C 58B43652 F2004784 8F415967 3061
quit
interface FastEthernet0/0
ip address 10.1.1.251 255.255.255.0(可达CA的链路)
duplex half
no ip http server
no ip http secure-server
logging alarm informational
control-plane
gatekeeper
shutdown
line con 0
exec-timeout 0 0
stopbits 1
line aux 0
stopbits 1
line vty 0 4
end
验证:
R1#sh cry ca ce(检查证书,这里和CA上的显示不同:CA只显示 SN:01,这里的SN:02是客户的身份证书,01是CA根证书)
Certificate
Status: Available
Certificate Serial Number: 02
Certificate Usage: General Purpose
Issuer:
cn=R2
Subject:
Name: R1.cisco.com
Serial Number: 64EE7504
serialNumber=4294967295+hostname=R1.cisco.com
Validity Date:
start date: 20:41:59 UTC Dec 1 2007
end date: 20:41:59 UTC Nov 30 2008
Associated Trustpoints: R2
CA Certificate
Status: Available
Certificate Serial Number: 01
Certificate Usage: Signature
Issuer:
cn=R2
Subject:
cn=R2
Validity Date:
start date: 19:40:53 UTC Dec 1 2007
end date: 19:40:53 UTC Nov 30 2010
Associated Trustpoints: R2
R1#sh cry ca trustpoints(检查信任点)
Trustpoint R2:
Subject Name:
cn=R2
Serial Number: 01
Certificate configured.
SCEP URL: http://R2:80/cgi-bin
R1#sh cry key pubkey-chain rs
Codes: M - Manually configured, C - Extracted from certificate
Code Usage IP-Address/VRF Keyring Name
C Signing default X.500 DN name:
cn=R2
R1#sh cry key mypubkey rsa(密钥对,用来向CA申请身份证书和根证书)
% Key pair was generated at: 20:09:27 UTC Dec 1 2007
Key name: R1.cisco.com
Storage Device: not specified
Usage: General Purpose Key
Key is not exportable.
Key Data:
305C300D 06092A86 4886F70D 01010105 00034B00 30480241 00B3A9FD B6399101
6D2E82B3 6760E279 E87A8638 66A4F2C5 BBCEDC7B 455E18DD 529D3C9D 833E6994
61329933 7D23223C 73DFBD87 859A383B 00B2D76D 450EDA08 79020301 0001
% Key pair was generated at: 21:09:29 UTC Dec 1 2007
Key name: R1.cisco.com.server
Temporary key
Usage: Encryption Key
Key is not exportable.
Key Data:
307C300D 06092A86 4886F70D 01010105 00036B00 30680261 00CB09EE 4E97225A
5EE647C5 F0265F39 E3A3940E 357C8A85 C4992CD9 05B44481 043579AC C44521F4
8C79B4FF 7901295A 854A7A6C C07D0591 B933AFCE 66610EEA 74BE0E6B A671493A
D663BCC3 E5FAF359 1A5846E2 88D0E230 7B2BC328 C79B92A5 07020301 0001
在CA SERVER上的检查,有什么不同呢?
R2#sh cry ca ce(这个就是CA自签发的根证书了)
CA Certificate
Status: Available
Certificate Serial Number: 01
Certificate Usage: Signature
Issuer:
cn=R2
Subject:
cn=R2
Validity Date:
start date: 19:40:53 UTC Dec 1 2007
end date: 19:40:53 UTC Nov 30 2010
Associated Trustpoints: R2
R2#sh cry key my r 记得:CA需要RSA密钥对来产生一个根证书上的签名和验证。
% Key pair was generated at: 19:31:35 UTC Dec 1 2007
Key name: R2
Storage Device: not specified
Usage: General Purpose Key
Key is exportable.
Key Data:
305C300D 06092A86 4886F70D 01010105 00034B00 30480241 00EE8531 585998CA
B38D17CD 4360B69D D055CDD7 DA0A4A85 74587C8B DCB36511 C434E176 BD24C123
E86E472F 214FF771 83A1D051 9AC3224D 2859B54E 9E011230 BF020301 0001
% Key pair was generated at: 20:31:37 UTC Dec 1 2007
Key name: R2.server
Temporary key
Usage: Encryption Key
Key is not exportable.
Key Data:
307C300D 06092A86 4886F70D 01010105 00036B00 30680261 00AE9718 F1508FCF
77C7B49E C2A471B2 90D7112C 1D30147E 1A2C01E0 B65A2125 64FAF59B 1C4C0358
D6C11653 02F23FBB 29B61694 50AC731A C07E6338 5F8B72A6 F732043B 844CBE0F
1576DABE 7DDA3199 BCE970C7 38101610 A340B31D 8AD9C138 35020301 0001
R2#sh cry key pubkey-chain r
Codes: M - Manually configured, C - Extracted from certificate
Code Usage IP-Address/VRF Keyring Name
C Signing default X.500 DN name:
cn=R2
R2#sh cry pki ser
Certificate Server R2:
Status: enabled
State: enabled
Server's configuration is locked (enter "shut" to unlock it)
Issuer name: CN=R2
CA cert fingerprint: 4C4A5CB1 BBC3975A 43A6D2E8 BECB9853
Granting mode is: manual
Last certificate issued serial number: 0x2
CA certificate expiration timer: 19:40:53 UTC Nov 30 2010
CRL NextUpdate timer: 01:40:54 UTC Dec 2 2007
Current primary storage dir: nvram:
Database Level: Minimum - no cert data written to storage
R2#dir nvram:
Directory of nvram:/
122 -rw- 1181 <no date> startup-config
123 ---- 1091 <no date> private-config
124 -rw- 1181 <no date> underlying-config
1 ---- 34 <no date> persistent-data
2 ---- 4 <no date> rf_cold_starts
3 -rw- 32 <no date> R2.ser
4 -rw- 182 <no date> R2.pub
5 -rw- 556 <no date> R2.prv
6 -rw- 370 <no date> R2#1CA.cer
7 -rw- 147 <no date> R2.crl
8 -rw- 1059 <no date> R2_00001.p12
10 -rw- 0 <no date> ifIndex-table
这里没有crt\cnm文件,因为在database level密钥配置,默认是minimal