Cisco IOS 自身集成的 PKI 功能

Cisco IOS 自身已经集成了 PKI 的功能,也就是说我们可以将 IOS 设置为 CA 并且签发 certificate。

为了设置 CA 我们首先需要 CA 给自己签发一张证书 (self-sign certificate),证书的签发需要用到 key,所以第一步就需要产生 key-pair。key-pair 可以自动产生也可以手动配置,自动产生的 key-pair 长度不可控,而且较短,下面的实例都是基于手动产生 key-pair 的方法。

配置 CA

手动产生 key-pair

产生名字为 My_CA_Key,长度为 4096 可导出的 RSA key-pair。

R1(config)#crypto key generate rsa label My_CA_Key modulus 4096 exportable

exportable 的 key 对今后的维护有一定的帮助因为我们可以把 key 导出到其他设备上,但是同时也带来了安全隐患。

我们只能对产生出来的 public key 进行查看,private key 是隐藏的。

在这里可以看到有一个后缀为 .server 的 key 也产生出来了, 这是系统自己产生出来给 SSH 使用的。

配置 trustpoint

在 Cisco 有一个 trustpoint 的概念,trustpoint 就等同于 CA。引用 Cisco 文档原话如下:

A CA,also known as a trustpoint,manages certificate requests and issues certificates to participating network devices.

在 trustpoint 中把第一步产生的 key 绑定起来。

R1(config)#crypto pki trustpoint My_CA
R1(ca-trustpoint)#rsakeypair My_CA_Key

配置 CA 参数

R1(config)#crypto pki server My_CA
R1(cs-server)#issuer-name cn=R1.networkingcube.com
R1(cs-server)#grant auto
R1(cs-server)#database archive pem password CISCO123
R1(cs-server)#no shutdown

需要注意 server 后面的 My_CA 是我们 trustpoint 的名字。

开启 HTTP

R1(config)#ip http server

只有开启了 HTTP 我们配置的 CA 才会真正的 enable,因为 certificate enrollment 需要用到 SCEP 协议,而 SCEP 协议利了 HTTP 协议。

配置 Client

R2 会作为 Client 向 R1 申请证书的签发或者叫 certificate enrollment,这个过程我们会利用 SCEP 来完成,所以首先测试一下连通性:

产生 key-pair

R2(config)#ip domain name test.com
R2(config)#crypto key generate rsa modulus 1024 label R2_Key 

定义 trustpoint

R2(config)#crypto pki trustpoint My_Trust_CA
R2(ca-trustpoint)#enrollment url http://1.1.1.1:80
R2(ca-trustpoint)#subject-name cn=R2.test.com
R2(ca-trustpoint)#rsakeypair R2_Key

验证 CA

我们可以利用 MD5 和 SHA1 来对配置的 CA 进行验证:

请求证书

R2(config)#crypto pki enroll My_Trust_CA
%
% Start certificate enrollment ..
% Create a challenge password. You will need to verbally provide this
   password to the CA Administrator in order to revoke your certificate.
   For security reasons your password will not be saved in the configuration.
   Please make a note of it.

Password:
Re-enter password:

% The subject name in the certificate will include: cn=R2.test.com
% The subject name in the certificate will include: R2.test.com
% Include the router serial number in the subject name? [yes/no]: yes
% The serial number in the certificate will be: 71307266
% Include an IP address in the subject name? [no]: no
Request certificate from CA? [yes/no]: yes
% Certificate request sent to Certificate Authority
% The 'show crypto pki certificate verbose My_Trust_CA' commandwill show the fingerprint.

R2(config)#
*Nov 20 15:01:41.142: CRYPTO_PKI:  Certificate Request Fingerprint MD5: 67C26903 61C8189C 418BBEA5 A909F82D
*Nov 20 15:01:41.142: CRYPTO_PKI:  Certificate Request Fingerprint SHA1: AAA2F163 5D91CF97 0609E4B1 79B160CB 50F9B2A2
R2(config)#
*Nov 20 15:01:41.768: %PKI-6-CERTRET: Certificate received from Certificate Authority
R2(config)#

在这个过程中 Client 也会将 CA 的 certificate 一并导入

发表评论

电子邮件地址不会被公开。