关键词:PKI,CA,RA,IKE,IPsec,SSL
摘 要:PKI是一个用公开密钥原理和技术来实现并提供安全服务的具有通用性的安全基础设施。本文主要介绍应用PKI实现的基于证书认证的IKE典型配置过程,及SSL典型配置应用。
缩略语:
缩略语 | 英文全名 | 中文解释 |
CA | Certificate Authority | 认证机构 |
CRL | Certificate Revocation List | 证书吊销列表 |
HTTP | Hypertext Transfer Protocol | 超文本传输协议 |
HTTPS | Hypertext Transfer Protocol Secure | 安全超文本传输协议 |
IIS | Internet Information Service | Internet信息服务 |
IKE | Internet Key Exchange | Internet密钥交互 |
IPsec | Internet Protocol Security | IP安全 |
LDAP | Light-weight Directory Access Protocol | 轻量级目录访问协议 |
PKC | Public Key Certificate | 公开密钥证书 |
| PKI | Public Key Infrastructure | 公钥基础设施 |
RA | Registration Authority | 注册机构 |
S/MIME | Secure/Multipurpose Internet Mail Extensions | 安全/多用途Internet邮件扩充协议 |
SCEP | Simple Certification Enrollment Protocol | 简单证书注册协议 |
SSL | Secure Sockets Layer | 安全套接层 |
VPN | Virtual Private Network | 虚拟专用网络 |
目 录
PKI是一组服务和策略,提供了一个将公钥和用户身份唯一绑定的机制,以及如何实施并维护这个绑定相关信息的框架;是一个通过使用公开密钥技术和数字证书来确保系统信息安全,并负责验证数字证书持有者身份的体系。
PKI的主要功能是通过签发数字证书来绑定证书持有者的身份和相关的公开密钥;为用户获取证书、访问证书和吊销证书提供途径;利用数字证书及相关的各种服务(证书发布、黑名单发布等)实现通信过程中各实体的身份认证,保证了通信数据的完整性和不可否认性。
PKI技术的广泛应用能满足人们对网络交易安全保障的需求。作为一种基础设施,PKI的应用范围非常广泛,并且在不断发展之中,以下是PKI的典型应用场景。
VPN是一种构建在公用通信基础设施上的专用数据通信网络,利用网络层安全协议(如IPsec)和建立在PKI上的加密与数字签名技术来获得机密性保护。
电子邮件的安全也要求机密、完整、认证和不可否认,而这些都可以利用PKI技术来实现。目前发展很快的安全电子邮件协议S/MIME,是一个允许发送加密和有签名邮件的协议。该协议的实现需要依赖于PKI技术,它采用了PKI数字签名技术并支持消息和附件的加密,无须收发双方共享相同密钥。
为了透明地解决Web的安全问题,在两个实体进行通信之前,先要建立SSL连接,以此实现对应用层透明的安全通信。利用PKI技术,SSL协议在协商时完成了对服务器和客户端基于证书的身份认证(其中,对客户端的认证是可选的),保证了通信安全。
在配置过程中,请注意以下几点:
l 证书中包含有效时间,只有设备与CA服务器的时间同步,设备才能成功获取证书。
l 若使用Windows 2003 server作为CA服务器,则服务器上需要安装并启用IIS用于控制和管理CA服务器。其它CA服务器上是否需要安装特殊的插件,请以实际情况为准。
l 为了避免与已有的Web服务冲突,建议修改CA服务器默认网站的TCP端口号。
作为VPN主要协议的IPsec,为IP层的通信安全提供了有利的保障。在实施IPsec的过程中,可以使用IKE协议来建立SA。但IKE协议在复杂的网络环境中仍然可能因为身份认证机制简单而产生一定的安全隐患。如果将IKE与PKI技术相结合,由基于PKI数字证书的身份认证机制实现强认证,则可以提高VPN网关的安全性和可扩展性。
两个子网通过各自的网关设备与外部网络互联,希望使用IPsec隧道构建数据流的安全通道,具体需求如下:
l 在Router A和Router B之间建立一个IPsec安全隧道对子网Group 1(10.1.1.0/24)与子网Group 2(11.1.1.0/24)之间的数据流进行安全保护。
l 在Router A和Router B之间使用IKE自动协商建立安全通道,IKE自动协商采用基于PKI证书的身份认证方式。

图1 基于证书认证的IKE典型配置组网图
l 配置PKI,定义证书实体及设置PKI域的相关属性
l 配置IKE,使用数字签名进行身份认证
l 配置IPsec,保护两个子网之间的数据流
l 申请证书,并将证书下载到本地
& 说明:
l 以下配置均是在实验室环境下进行的配置和验证,配置前设备的所有参数均采用出厂时的缺省配置。如果您已经对设备进行了配置,为了保证配置效果,请确认现有配置和以下配置不冲突。
l 进行下面的配置之前,需要确保各子网网关路由器和CA服务器之间的路由可达。




& 说明:
SCEP的安装文件可以从Microsoft网站免费下载。

图6 安装SCEP插件1

图7 安装SCEP插件2

图8 安装SCEP插件3
注意:
RA的标识信息“Name”和CA的名称不能相同,否则相关功能可能无法正常工作。

图9 安装SCEP插件4

图10 安装SCEP插件5
完成上述配置后,打开[控制面板/管理工具]中的[证书颁发机构],如果安装成功,在[颁发的证书]中将存在两个CA服务器颁发给RA的证书。

图11 修改证书服务的属性

图12 证书服务属性窗口

图13 策略模块的属性



图16 IIS管理器

图17 修改默认网站的主目录
注意:
为了避免与已有的服务冲突,默认网站的TCP端口号不能与已有服务的端口号相同,且建议不要使用默认端口号80。

图18 修改默认网站的TCP端口号
# 配置PKI实体entityA。
<RouterA> system-view
[RouterA] pki entity entityA
[RouterA-pki-entity-entityA] common-name routera
[RouterA-pki-entity-entityA] ip 2.2.2.1
[RouterA-pki-entity-entityA] quit
# 创建PKI域。
[RouterA] pki domain domain1
# 配置可信任的CA名称。
[RouterA-pki-domain-domain1] ca identifier ca server
# 配置注册服务器URL地址(为安装SCEP插件时弹出的URL地址,格式为http://host:port/certsrv/mscep/mscep.dll,其中,host:port为CA服务器的主机地址和端口号)。由于CA服务器上默认网站的TCP端口号修改为8080,配置注册服务器的URL地址时,需要指定端口号为8080。
[RouterA-pki-domain-domain1] certificate request url http://1.1.1.101:8080/certsrv/mscep/mscep.dll
# 指定注册服务器类型为RA。
[RouterA-pki-domain-domain1] certificate request from ra
# 指定关联的PKI实体为entityA。
[RouterA-pki-domain-domain1] certificate request entity entityA
[RouterA-pki-domain-domain1] quit
# 设置IKE提议,使用RSA密钥签名。
[RouterA] ike proposal 1
[RouterA-ike-proposal-1] authentication-method rsa-signature
[RouterA-ike-proposal-1] quit
# 创建IKE对等体。
[RouterA] ike peer peer1
# 指定对端对等体地址。
[RouterA-ike-peer-peer1] remote-address 3.3.3.1
# 指定PKI域名。
[RouterA-ike-peer-peer1] certificate domain domain1
[RouterA-ike-peer-peer1] quit
# 配置ACL控制列表,匹配需要保护的报文。
[RouterA] acl number 3000
[RouterA-acl-adv-3000] rule 0 permit ip source 10.1.1.0 0.0.0.255
[RouterA-acl-adv-3000] quit
# 创建IPsec提议。
[RouterA] ipsec proposal ipsprop1
# 配置安全协议为ESP。
[RouterA-ipsec-proposal-ipsprop1] transform esp
# 配置封装格式为隧道。
[RouterA-ipsec-proposal-ipsprop1] encapsulation-mode tunnel
# 配置ESP安全协议加密算法。
[RouterA-ipsec-proposal-ipsprop1] esp encryption-algorithm des
# 配置ESP安全协议散列算法。
[RouterA-ipsec-proposal-ipsprop1] esp authentication-algorithm md5
[RouterA-ipsec-proposal-ipsprop1] quit
# 创建IPsec安全策略。
[RouterA] ipsec policy policy1 1 isakmp
# 指定安全访问列表。
[RouterA-ipsec-policy-isakmp-policy1-1] security acl 3000
# 指定IKE对等体。
[RouterA-ipsec-policy-isakmp-policy1-1] ike-peer peer1
# 指定IPsec安全提议。
[RouterA-ipsec-policy-isakmp-policy1-1] proposal ipsporp1
[RouterA-ipsec-policy-isakmp-policy1-1] quit
# 接口下绑定IPsec策略。
[RouterA] interface serial 2/0
[RouterA-Serial2/0] ipsec policy policy1
[RouterA-Serial2/0] quit
# 生成本地RSA密钥。
[RouterA] public-key local create rsa
Warning: The local key pair already exist.
Confirm to replace them? [Y/N]:y
The range of public key size is (512 ~ 2048).
NOTES: If the key modulus is greater than 512,
It will take a few minutes.
Press CTRL+C to abort.
Input the bits of the modulus[default = 1024]:
Generating Keys...
......++++++
....++++++
......++++++++
...++++++++
证书申请有两种方式:带内方式和带外方式。请根据实际情况选择其中一种配置。
l 带内方式申请
# 手动在线获取CA证书。
[RouterA] pki retrieval-certificate ca domain domain1
Retrieving CA/RA certificates. Please wait a while......
The trusted CA's finger print is:
MD5 fingerprint:4F10 9CB0 4D51 6EB2 21D4 12C4 5881 EE2F
SHA1 fingerprint:1A56 5741 219F 8E98 6438 B556 2C5A 2275 F097 2536
Is the finger print correct?(Y/N):y
Saving CA/RA certificates chain, please wait a moment......
CA certificates retrieval success.
# 手动在线申请本地证书。
[RouterA] pki request-certificate domain domain1
Certificate is being requested, please wait......
[RouterA]
Enrolling the local certificate,please wait a while......
Certificate request Successfully!
Saving the local certificate to device......
Done!
l 带外方式申请
当无法通过SCEP协议向CA在线申请证书时,可以使用参数pkcs10打印出本地的证书申请信息。用户保存证书申请信息,并将其通过带外方式发送给CA进行证书申请。
# 以pkcs10的格式打印本地证书请求信息。
[RouterA] pki request-certificate domain domain1 pkcs10
-----BEGIN CERTIFICATE REQUEST-----
MIIBTTCBtwIBADAOMQwwCgYDVQQDEwMxMjMwgZ8wDQYJKoZIhvcNAQEBBQADgY0A
MIGJAoGBAOEvjYboMDX0akLSOqSSCQm7dE7nmJz0N2BsuPh7I4mlkxLHZIwp5vAo
PT1Q2i85uLqQDtmxjuYd9fZU4qM9Ps9It2lKG4DCFyFXkKTI9U4jPK42/grPMFmq
V8BED9H+O6c9N/sWwA85C2um7UgIOj6TGi6LDBrp9ZZ3xFSO54bdAgMBAAGgADAN
BgkqhkiG9w0BAQQFAAOBgQBnjx0Qyme4Pu29BOjvjVYe8qhf9SizXpl6ty4jPS8Y
+XkVV30WCs1ITfnUrD5IbhiDr50tDdqqv8y9B7kB+7/DBWcFv4Hrek5XBJveGolT
qZ8+M7To8BXxCV4NRLTCsMREYonirVnlKR94KV3TCTGOI1E9KXKgg7DLHZFe75IP
lQ==
-----END CERTIFICATE REQUEST-----
[RouterA]
将BEGIN与END分割线之间的本地证书请求内容通过带外方式传送到CA服务器。打开证书服务器申请证书主页http://1.1.1.101:8080/certsrv,选择“申请一个证书”。

图19 证书服务器申请证书主页
选择“高级证书申请”。

图20 提交证书申请
选择“使用base64编码的CMC或PKCS#10文件提交一个证书申请,或使用base64编码的PKCS#7文件续订证书申请”。

图21 高级证书申请
在下面的页面中,把刚才用pkcs10格式打印出来的本地证书请求信息添加到“保存的申请”文本框中,单击<提交>按钮。

图22 添加证书请求信息
若本地证书申请成功,在下面的页面中选择证书编码格式“DER编码”,然后单击“下载证书”。
& 说明:
之后,设备上进行证书导入时选择的证书文件格式参数要与此处选择的证书编码格式保持一致。

图23 选择证书编码格式
在弹出的文件下载对话框中将申请到的本地证书保存在本地路径,文件名称修改为“local_cert.cer”。

图24 保存本地证书
再次返回证书服务器申请证书主页http://1.1.1.101:8080/certsrv,选择“下载一个CA证书,证书链或CRL”。

图25 证书服务器申请证书主页
选择编码方法“DER”,单击“下载CA证书”。

图26 下载CA证书
在弹出的文件下载对话框中将CA证书保存在本地路径,文件名称修改为“ca_cert.cer”,此处略。至此,带外证书申请完成。
将以上保存在主机上的CA证书和本地证书通过带外方式发送给Router A,然后使用以下的命令导入到设备。
# 导入CA证书,选择文件编码格式为DER。
[RouterA] pki import-certificate ca domain domain1 der filename ca_cert.cer
Importing certificates. Please wait a while......
The trusted CA's finger print is:
MD5 fingerprint:5A9C E2EA 7363 CDA2 3B4F 0C15 B3F7 6E7D
SHA1 fingerprint:B58C B59D 2242 7244 7B83 F2E8 0C16 13EB E0BF 6526
Is the finger print correct?(Y/N):y
%Mar 13 20:32:56:158 2008 RouterA PKI/4/Verify_CA_Root_Cert:CA root certificate of the domain domain1 is trusted.
Import CA certificate successfully.
[RouterA]
%Mar 13 20:32:56:186 2008 RouterA PKI/4/Update_CA_Cert:Update CA certificates of the Domain domain1 successfully.
%Mar 13 20:32:56:187 2008 RouterA PKI/4/Import_CA_Cert:Import CA certificates of the domain domain1 successfully.
[RouterA]
# 导入本地证书,选择文件编码格式为DER。
[RouterA] pki import-certificate local domain domain1 der filename local_cert.cer
Importing certificates. Please wait a while......
%Mar 13 20:35:54:364 2008 RouterA PKI/4/Verify_Cert:Verify certificate CN=routera of the domain domain1 successfully.
Import local certificate successfully.
[RouterA]
%Mar 13 20:35:54:376 2008 RouterA PKI/4/Import_Local_Cert:Import local certificate of the domain domain1 successfully.
[RouterA]
[RouterA] display current-configuration
#
version 5.20, Beta 1505L01, Standard
#
sysname RouterA
#
pki entity entityA
common-name routera
ip 2.2.2.1
#
pki domain domain1
ca identifier ca server
certificate request url http://1.1.1.101:8080/certsrv/mscep/mscep.dll
certificate request from ra
certificate request entity entityA
#
ike proposal 1
authentication-method rsa-signature
#
ike peer peer1
remote-address 3.3.3.1
certificate domain domain1
#
ipsec proposal ipsprop1
#
ipsec policy policy1 1 isakmp
security acl 3000
ike-peer peer1
proposal ipsprop1
#
acl number 3000
rule 0 permit ip source 10.1.1.0 0.0.0.255
#
interface Serial2/0
link-protocol ppp
ip address 2.2.2.1 255.255.255.0
ipsec policy policy1
#
return
# 配置PKI实体entityB。
<RouterB> system-view
[RouterB] pki entity entityB
[RouterB-pki-entity-entityB] common-name routerb
[RouterB-pki-entity-entityB] ip 3.3.3.1
[RouterB-pki-entity-entityB] quit
# 创建PKI域。
[RouterB] pki domain domain2
# 配置可信任的CA名称。
[RouterB-pki-domain-domain2] ca identifier ca server
# 配置注册服务器URL地址(为安装SCEP插件时弹出的URL地址,格式为http://host:port/certsrv/mscep/mscep.dll,其中,host:port为CA服务器的主机地址和端口号)。由于CA服务器上默认网站的TCP端口号修改为8080,配置注册服务器的URL地址时,需要指定端口号为8080。
[RouterB-pki-domain-domain2] certificate request url http://1.1.1.101:8080/certsrv/mscep/mscep.dll
# 指定认证服务器类型为RA。
[RouterB-pki-domain-domain2] certificate request from ra
# 指定关联的PKI实体为entityB。
[RouterB-pki-domain-domain2] certificate request entity entityB
[RouterB-pki-domain-domain2] quit
# 配置IKE提议,使用RSA密钥签名。
[RouterB] ike proposal 2
[RouterB-ike-proposal-2] authentication-method rsa-signature
[RouterB-ike-proposal-2] quit
# 创建IKE对等体。
[RouterB] ike peer peer2
# 指定对端对等体地址。
[RouterB-ike-peer-peer2] remote-address 2.2.2.1
# 指定PKI域名。
[RouterB-ike-peer-peer2] certificate domain domain2
[RouterB-ike-peer-peer2] quit
# 配置ACL控制列表,匹配需要保护的报文。
[RouterB] acl number 3000
[RouterB-acl-adv-3000] rule 0 permit ip destination 10.1.1.0 0.0.0.255
[RouterB-acl-adv-3000] quit
# 创建IPsec提议。
[RouterB] ipsec proposal ipsprop2
# 配置安全协议为ESP。
[RouterB-ipsec-proposal-ipsprop2] transform esp
# 配置封装格式为隧道。
[RouterB-ipsec-proposal-ipsprop2] encapsulation-mode tunnel
# 配置ESP安全协议加密算法。
[RouterB-ipsec-proposal-ipsprop2] esp encryption-algorithm des
# 配置ESP安全协议散列算法。
[RouterB-ipsec-proposal-ipsprop2] esp authentication-algorithm md5
[RouterB-ipsec-proposal-ipsprop2] quit
# 创建IPsec策略。
[RouterB] ipsec policy policy2 1 isakmp
# 指定安全访问列表。
[RouterB-ipsec-policy-isakmp-policy2-1] security acl 3000
# 指定IKE对等体。
[RouterB-ipsec-policy-isakmp-policy2-1] ike-peer peer2
# 指定IPsec安全提议。
[RouterB-ipsec-policy-isakmp-policy2-1] proposal ipsprop2
[RouterB-ipsec-policy-isakmp-policy2-1] quit
# 接口下绑定IPsec策略。
[RouterB] interface serial 2/0
[RouterB-Serial2/0] ipsec policy policy2
[RouterB-Serial2/0] quit
# 生成本地RSA密钥。
[RouterB] public-key local create rsa
Warning: The local key pair already exist.
Confirm to replace them? [Y/N]:y
The range of public key size is (512 ~ 2048).
NOTES: If the key modulus is greater than 512,
It will take a few minutes.
Press CTRL+C to abort.
Input the bits of the modulus[default = 1024]:
Generating Keys...
......++++++
....++++++
......++++++++
...++++++++
证书申请有两种方式:带内方式和带外方式。
l 带内方式申请
# 手动在线获取CA证书。
[RouterB] pki retrieval-certificate ca domain domain2
Retrieving CA/RA certificates. Please wait a while......
The trusted CA's finger print is:
MD5 fingerprint:8210 000F 4D51 48B2 21D4 12C4 9883 EE2F
SHA1 fingerprint:1A56 A74F 219F 8E98 EE38 B556 2B5A 2275 F097 2536
Is the finger print correct?(Y/N):y
Saving CA/RA certificates chain, please wait a moment......
CA certificates retrieval success.
# 手动在线申请本地证书。
[RouterB] pki request-certificate domain domain2
Certificate is being requested, please wait......
[RouterB]
Enrolling the local certificate,please wait a while......
Certificate request Successfully!
Saving the local certificate to device......
Done!
l 带外方式申请
带外证书申请的操作过程与Router A的相同,此处略。完成带外申请后通过下面的命令分别将获得的CA证书和本地证书导入到设备。
[RouterB] pki import-certificate ca domain domain2 der filename ca_cert.cer
Importing certificates. Please wait a while......
The trusted CA's finger print is:
MD5 fingerprint:5A9C E2EA 7363 CDA2 3B4F 0C15 B3F7 6E7D
SHA1 fingerprint:B58C B59D 2242 7244 7B83 F2E8 0C16 13EB E0BF 6526
Is the finger print correct?(Y/N):y
%Mar 14 09:06:54:504 2008 RouterB PKI/4/Verify_CA_Root_Cert:CA root certificate of the domain domain2 is trusted.
Import CA certificate successfully.
[RouterB]
%Mar 14 09:06:54:575 2008 RouterB PKI/4/Update_CA_Cert:Update CA certificates of the Domain domain2 successfully.
%Mar 14 09:06:54:575 2008 RouterB PKI/4/Import_CA_Cert:Import CA certificates of the domain domain2 successfully.
[RouterB]
[RouterB] pki import-certificate local domain domain2 der filename local_cert.cer
Importing certificates. Please wait a while......
%Mar 14 09:07:11:494 2008 RouterB PKI/4/Verify_Cert:Verify certificate CN= routerb of the domain domain2 successfully.
Import local certificate successfully.
[RouterB]
%Mar 14 09:07:11:506 2008 RouterB PKI/4/Import_Local_Cert:Import local certificate of the domain domain2 successfully.
[RouterB]
[RouterB] display current-configuration
#
version 5.20, Beta 1505L01, Standard
#
sysname RouterB
#
pki entity entityB
common-name routerb
ip 3.3.3.1
#
pki domain domain2
ca identifier ca server
certificate request url http://1.1.1.101:8080/certsrv/mscep/mscep.dll
certificate request from ra
certificate request entity entityB
#
ike proposal 2
authentication-method rsa-signature
#
ike peer peer2
remote-address 2.2.2.1
certificate domain domain2
#
ipsec proposal ipsprop2
#
ipsec policy ipsprop2 1 isakmp
security acl 3000
ike-peer peer2
proposal ipsprop2
#
acl number 3000
rule 0 permit ip destination 10.1.1.0 0.0.0.255
#
interface Serial2/0
link-protocol ppp
ip address 3.3.3.1 255.255.255.0
ipsec policy policy2
#
return
# 在Router A上查看IKE SA。
[RouterA] display ike sa
total phase-1 SAs: 0
connection-id peer flag phase doi
----------------------------------------------------------
[RouterA]
# 在Router B上查看IKE SA。
[RouterB] display ike sa
total phase-1 SAs: 0