08-PKI配置
本章节下载: 08-PKI配置 (332.60 KB)
PKI(Public Key Infrastructure,公钥基础设施)是一个利用公钥理论和技术来实现并提供信息安全服务的具有通用性的安全基础设施。
公钥体制也称为非对称密钥体制,是目前已经得到广泛应用的一种密码体制。该体制使用一个公开的密钥(公钥)和一个保密的密钥(私钥)进行信息的加密和解密,用公钥加密的信息只能用私钥解密,反之亦然。这样的一个公钥和其对应的一个私钥称为一个密钥对。公钥体制的这种特点使其可以应用于安全协议,实现数据源认证、完整性和不可抵赖性。
PKI系统以数字证书的形式分发和使用公钥。数字证书是一个用户的身份和他所持有的公钥的结合。基于数字证书的PKI系统,能够为网络通信和网络交易(例如电子政务和电子商务)提供各种安全服务。
目前,H3C的PKI特性可为安全协议IPsec(IP Security,IP安全)、SSL(Secure Sockets Layer,安全套接字层)、WAPI(WLAN Authentication and Privacy Infrastructure,无线局域网鉴别与保密基础结构)提供证书管理机制。
数字证书是经CA(Certificate Authority,证书颁发机构)签名的、包含公钥及相关的用户身份信息的文件,它建立了用户身份信息与用户公钥的关联。CA对数字证书的签名保证了证书是可信任的。数字证书的格式遵循ITU-T X.509国际标准,目前最常用的为X.509 V3标准。数字证书中包含多个字段,包括证书签发者的名称、被签发者的名称(或者称为主题)、公钥信息、CA对证书的数字签名、证书的有效期等。
本手册中涉及四类证书:CA证书、RA(Registration Authority,证书注册机构)证书、本地证书和对端证书。
· CA证书是CA持有的证书。若PKI系统中存在多个CA,则会形成一个CA层次结构,最上层的CA是根CA,它持有一个自签名的证书(即根CA对自己的证书签名),下一级CA证书分别由上一级CA签发。这样,从根CA开始逐级签发的证书就会形成多个可信任的链状结构,每一条路径称为一个证书链。
· RA证书是RA持有的证书,由CA签发。RA受CA委托,可以为CA分担部分管理工作。RA在PKI系统中是可选的。
· 本地证书是本设备持有的证书,由CA签发。
· 对端证书是其它设备持有的证书,由CA签发。
由于用户名称的改变、私钥泄漏或业务中止等原因,需要存在一种方法将现行的证书吊销,即废除公钥及相关的用户身份信息的绑定关系。在PKI中,可以通过发布CRL的方式来公开证书的吊销信息。当一个或若干个证书被吊销以后,CA签发CRL来声明这些证书是无效的,CRL中会列出所有被吊销的证书的序列号。因此,CRL提供了一种检验证书有效性的方式。
CA策略是指CA在受理证书请求、颁发证书、吊销证书和发布CRL时所采用的一套标准。通常,CA以一种叫做CPS(Certification Practice Statement,证书惯例声明)的文档发布其策略。CA策略可以通过带外(如电话、磁盘、电子邮件等)或其它方式获取。由于不同的CA使用不同的策略,所以在选择信任的CA进行证书申请之前,必须理解CA策略。
一个PKI体系由终端PKI实体、CA、RA和证书/CRL发布点四类实体共同组成,如下图1-1。
图1-1 PKI体系结构图
终端PKI实体是PKI服务的最终使用者,可以是个人、组织、设备(如路由器、交换机)或计算机中运行的进程,后文简称为PKI实体。
CA是一个用于签发并管理数字证书的可信PKI实体。其作用包括:签发证书、规定证书的有效期和发布CRL。
RA是一个受CA委托来完成PKI实体注册的机构,它接收用户的注册申请,审查用户的申请资格,并决定是否同意CA给其签发数字证书,用于减轻CA的负担。建议在部署PKI系统时,RA与CA安装在不同的设备上,减少CA与外界的直接交互,以保护CA的私钥。
证书/CRL发布点用于对用户证书和CRL进行存储和管理,并提供查询功能。通常,证书/CRL发布点位于一个目录服务器上,该服务器可以采用LDAP(Lightweight Directory Access Protocol,轻量级目录访问协议)协议、HTTP等协议工作。其中,较为常用的是LDAP协议,它提供了一种访问发布点的方式。LDAP服务器负责将CA/RA服务器传输过来的数字证书或CRL进行存储,并提供目录浏览服务。用户通过访问LDAP服务器获取自己和其他用户的数字证书或者CRL。
下面是一个PKI实体向CA申请本地证书的典型工作过程,其中由RA来完成PKI实体的注册:
(1) PKI实体向RA提出证书申请;
(2) RA审核PKI实体身份,将PKI实体身份信息和公钥以数字签名的方式发送给CA;
(3) CA验证数字签名,同意PKI实体的申请,并颁发证书;
(4) RA接收CA返回的证书,将其发布到LDAP服务器(或其它形式的发布点)上以提供目录浏览服务,并通知PKI实体证书发布成功;
(5) PKI实体通过SCEP(Simple Certificate Enrollment Protocol,简单证书注册协议)从RA处获取证书,利用该证书可以与其它PKI实体使用加密、数字签名进行安全通信。
PKI技术能满足人们对网络交易安全保障的需求。PKI的应用范围非常广泛,并且在不断发展之中,下面给出几个应用实例。
VPN是一种构建在公用通信基础设施上的专用数据通信网络,它可以利用网络层安全协议(如IPsec)和建立在PKI上的加密与数字签名技术来获得完整性保护。
电子邮件的安全也要求机密性、完整性、数据源认证和不可抵赖。目前发展很快的安全电子邮件协议S/MIME(Secure/Multipurpose Internet Mail Extensions,安全/多用途Internet邮件扩充协议),是一个允许发送加密和有签名邮件的协议。该协议的实现需要依赖于PKI技术。
为了透明地解决Web的安全问题,在浏览器和服务器之间进行通信之前,先要建立SSL连接。SSL协议允许在浏览器和服务器之间进行加密通信,并且利用PKI技术对服务器和浏览器端进行身份验证。
表1-1 PKI配置任务简介
配置任务 |
说明 |
详细配置 |
|
配置PKI实体 |
必选 |
||
配置PKI域 |
必选 |
||
申请证书 |
自动申请证书 |
二者必选其一 |
|
手工申请证书 |
|||
停止证书申请过程 |
可选 |
||
手工获取证书 |
可选 |
||
配置证书验证 |
可选 |
||
配置证书和CRL的存储路径 |
可选 |
||
导出证书 |
可选 |
||
删除证书 |
可选 |
||
配置证书属性的访问控制策略 |
可选 |
一份证书是一个公钥与一个实体身份信息的绑定。PKI实体的参数是PKI实体的身份信息,CA根据PKI实体提供的身份信息来唯一标识证书申请者。
一个有效的PKI实体参数中必须至少包括以下参数之一:
(1) DN(Distinguished Name,识别名),包含以下参数:
· 实体通用名。对于DN参数,实体的通用名必须配置。
· 实体所属国家代码,用标准的两字符代码表示。例如,“CN”是中国的合法国家代码,“US”是美国的合法国家代码
· 实体所在地理区域名称
· 实体所属组织名称
· 实体所属组织部门名称
· 实体所属州省
(2) FQDN(Fully Qualified Domain Name,完全合格域名),是PKI实体在网络中的唯一标识
(3) IP地址
配置PKI实体时,需要注意的是:
· PKI实体的配置必须与CA证书颁发策略相匹配,因此建议根据CA证书颁发策略来配置PKI实体,如哪些PKI实体参数为必选配置,哪些为可选配置。申请者的身份信息必须符合CA证书颁发策略,否则证书申请可能会失败。
· Windows 2000 CA服务器的SCEP插件对证书申请的数据长度有一定的限制。PKI实体配置项超过一定数据长度时,CA将不会响应PKI实体的证书申请。这种情况下如果通过离线方式提交申请,Windows 2000 CA服务器可以完成签发。其它CA服务器(例如RSA服务器和OpenCA服务器)目前没有这种限制。
表1-2 配置PKI实体
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建一个PKI实体,并进入该PKI实体视图 |
pki entity entity-name |
缺省情况下,不存在PKI实体 设备支持创建多个PKI实体 |
配置PKI实体DN |
· 单个配置各个DN属性: ¡ 配置通用名: common-name common-name-sting ¡ 配置PKI实体所属国家代码: country country-code-string ¡ 配置PKI实体所在地理区域名称: locality locality-name ¡ 配置PKI实体所属组织名称: organization org-name ¡ 配置PKI实体所属组织部门名称: organization-unit org-unit-name ¡ 配置PKI实体所属州或省的名称: state state-name · 一次配置多个DN属性: subject-dn dn-string |
缺省情况下,未配置PKI实体DN的属性值 subject-dn命令配置的识别名优先级高于通过common-name、country、locality、organization、organization-unit和state命令单独配置的识别名。 |
配置PKI实体的FQDN |
fqdn fqdn-name-string |
缺省情况下,未配置PKI实体的FQDN |
配置PKI实体的IP地址 |
ip { ip-address | interface interface-type interface-number } |
缺省情况下,未配置PKI实体的IP地址 |
PKI实体在进行PKI证书申请操作之前需要配置一些注册信息来配合完成申请的过程。这些信息的集合就是一个PKI域。
PKI域是一个本地概念,创建PKI域的目的是便于其它应用(比如IKE、SSL)引用PKI的配置。
PKI域中包括以下参数:
(1) 信任的CA名称
PKI实体通过一个可信的CA来完成证书的注册及颁发的。在证书申请之前,若当前的PKI域中没有CA证书,则需要首先获取CA证书,获取CA证书之前必须指定一个信任的CA名称。这个名称会被作为SCEP消息的一部分发送给CA服务器。一般情况下,CA服务器会忽略收到的SCEP消息中的CA名称的具体内容。但是如果在同一台服务器主机上配置了两个CA,且它们的URL是相同的,则需要根据PKI域中指定的信任的CA名词来区分它们。设备信任的CA的名称只是在获取CA证书时使用,申请本地证书时不会用到。
(2) PKI实体名称
向CA发送证书申请请求时,必须指定所使用的PKI实体名,以向CA表明自己的身份。
(3) 证书申请的注册受理机构
证书申请的受理一般由一个独立的注册机构(即RA)来承担,它并不给用户签发证书,只是对用户进行资格审查。有时PKI把注册管理的职能交给CA来完成,而不设立独立运行的RA,但这并不是取消了PKI的注册功能,而是将其作为CA的一项功能而已。推荐使用独立运行的RA作为注册受理机构。
(4) 注册受理机构服务器的URL
证书申请之前必须指定注册受理机构服务器的URL,PKI实体通过SCEP(Simple Certificate Enrollment Protocol,简单证书注册协议)向该URL地址发送证书申请请求。SCEP是专门用于与认证机构进行通信的协议。
(5) 证书申请状态的查询周期和最大次数
PKI实体在发送证书申请后,如果CA手工验证申请,证书的签发会需要很长时间。在此期间,PKI实体会定期发送状态查询,以便在证书签发后能及时获取到证书。设备上可以配置证书申请状态的查询周期和最大次数。
(6) LDAP服务器主机名
在PKI系统中,可以采用LDAP服务器来作为证书或CRL发布点,这时就需要指定LDAP服务器的位置。
(7) 验证CA根证书时使用的指纹
CA根证书的指纹,即根证书内容的散列值,该值对于每一个证书都是唯一的。PKI域中可以指定验证CA根证书时使用的指纹,缺省情况下未指定该指纹。
当设备从CA获得根证书时,可能需要验证CA根证书的指纹,具体包括以下两种情况:
· 通过命令获取CA证书或者导入CA证书,如果获取到的CA证书链中包含了设备上没有的CA根证书,需要验证CA根证书的指纹。如果PKI域中指定了验证根证书的指纹,且设备获取到的CA根证书的指纹与在PKI域中指定的指纹不同,则设备将拒绝接收该CA根证书,继而相应的获取CA证书或者导入CA证书操作会失败;如果PKI域中未指定验证根证书的指纹,则会提示用户自行验证根证书指纹。
· 当IKE协商等应用触发设备进行本地证书申请时,如果配置的证书申请方式为自动方式,且本地没有CA证书,设备会自动从CA服务器上获取CA证书。如果获取到的CA证书链中包含了设备上没有的CA根证书,则需要验证CA根证书的指纹。如果PKI域中指定了验证根证书的指纹,且设备获取到的CA根证书的指纹与在PKI域中指定的指纹不同,则设备将拒绝接收该CA根证书,继而本地证书申请的操作会失败。如果PKI域中未指定验证根证书的指纹,则本地证书申请的操作会失败。
(8) 证书申请使用的密钥对
密钥对的产生是证书申请过程中重要的一步。申请过程使用了一对主机密钥:私钥和公钥。私钥由用户保留,公钥和其它信息则交由CA进行签名,从而产生证书。在PKI域中可以引用三种算法的密钥对,分别为DSA密钥对、ECDSA密钥对、RSA密钥对。有关DSA、ECDSA和RSA密钥对的具体配置请参见“安全配置指导”中的“公钥管理”。申请证书前必须指定使用的密钥对,但该密钥对不必已经存在。申请过程中,如果指定的密钥对不存在,PKI实体可以根据指定的名字、算法和密钥模数长度生成相应的密钥对。
(9) 证书的扩展用途
设备支持的证书扩展用途包括以下几种:
· IKE使用
· SSL客户端使用
· SSL服务器端使用
证书申请中会带有指定的证书扩展用途,但最终签发的证书中带有哪些扩展用途,由CA自己的策略决定,可能与PKI域中指定的配置不完全一致。应用程序(例如IKE,SSL)认证过程中是否会使用这些用途,由应用程序的策略决定。
(10) 本地PKI操作产生的协议报文使用的源IP地址
如果希望PKI实体操作产生的PKI协议报文的源IP地址是一个特定的地址,例如当CA服务器上的策略要求仅接受来自指定地址或网段的证书申请时,则需要通过配置指定该地址。
表1-3 配置PKI域
配置任务 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
创建一个PKI域,并进入PKI域视图 |
pki domain domain-name |
缺省情况下,不存在PKI 域 |
|
配置设备信任的CA名称 |
ca identifier name |
获取本地证书之前,若当前的PKI域中没有CA证书,则需要首先获取CA证书。获取CA证书之前,必须配置信任的CA名称 缺省情况下,未配置信任的CA名称 |
|
指定用于申请证书的PKI实体名称 |
certificate request entity entity-name |
缺省情况下,未指定用于申请证书的PKI实体名称 |
|
配置证书申请的注册受理机构 |
certificate request from { ca | ra } |
缺省情况下,未指定证书申请的注册受理机构 |
|
配置注册受理机构服务器的URL |
certificate request url url-string |
缺省情况下,未指定注册受理机构服务器的URL |
|
(可选)配置证书申请状态查询的周期和最大次数 |
certificate request polling { count count | interval interval } |
缺省情况下,证书申请查询间隔为20分钟,最多查询50次 |
|
指定LDAP服务器 |
ldap-server host hostname [ port port-number ] |
需要通过LDAP协议获取证书时,此配置必选;需要通过LDAP协议获取CRL时,如果CRL的URL中未包含发布点地址信息,则此配置必选 缺省情况下,未指定LDAP服务器 |
|
配置验证CA根证书时使用的指纹 |
root-certificate fingerprint { md5 | sha1 } string |
当证书申请方式为自动方式时,此配置必选;当证书申请方式为手工方式时,此配置可选,若不配置,需要用户自行验证根证书指纹 缺省情况下,未指定验证根证书时使用的指纹 |
|
指定证书申请时使用的密钥对 |
指定RSA密钥对 |
public-key rsa { { encryption name encryption-key-name [ length key-length ] | signature name signature-key-name [ length key-length ] } * | general name key-name [ length key-length ] } |
三者选其一 缺省情况下,未指定所使用的密钥对 |
指定ECDSA密钥对 |
public-key ecdsa name key-name [ secp192r1 | secp256r1 | secp384r1 ] |
||
指定DSA密钥对 |
public-key dsa name key-name [ length key-length ] |
||
(可选)指定证书的扩展用途 |
usage { ike | ssl-client | ssl-server } * |
缺省情况下,证书可用于所有用途 |
|
(可选)指定PKI操作产生的协议报文使用的源IP地址 |
source ip { ip-address | interface interface-type interface-number } |
二者选其一 缺省情况下,PKI操作产生的协议报文的源IP地址为系统根据路由查找到的出接口的地址 |
|
source ipv6 { ipv6-address | interface interface-type interface-number } |
申请证书的过程就是PKI实体向CA自我介绍的过程。PKI实体向CA提供身份信息,以及相应的公钥,这些信息将成为颁发给该PKI实体证书的主要组成部分。PKI实体向CA提出证书申请,有离线和在线两种方式。
· 离线申请方式下,CA允许申请方通过带外方式(如电话、磁盘、电子邮件等)向CA提供申请信息。
· 在线申请方式下,实体通过SCEP协议向CA提交申请信息。在线申请有自动申请和手工申请两种方式。下文将详细介绍这两种方式的具体配置。
· 申请证书之前必须保证设备的系统时钟与CA的时钟同步,否则设备可能会错误地认为证书不在有效期内,导致申请证书失败。调整系统时钟的方法请参见“基础配置指导”中的“设备管理”。
· 为避免由于证书过期造成业务中断,请在选择自动方式申请证书时配置证书自动续签功能。
配置证书申请方式为自动方式后,当有应用协议与PKI联动时,如果应用协议中的PKI实体无本地证书(例如,IKE协商采用数字签名方法进行身份认证,但在协商过程中没有发现本地证书),则PKI实体自动通过SCEP协议向CA发起证书申请,并在申请成功后将本地证书获取到本地保存。在证书申请之前,若当前的PKI域中没有CA证书,也会首先自动获取CA证书。在申请过程中,如果指定的密钥对不存在,则PKI实体根据PKI域中指定的名字、算法和长度生成相应的密钥对。
证书自动续签是指,系统在证书有效期到达之前自动申请新的证书,申请成功后新证书立即替换原有证书。
需要注意的是,本地证书已存在的情况下,为保证密钥对与现存证书的一致性,不建议执行命令public-key local create或public-key local destroy创建或删除与现存证书使用的密钥对相同名称的密钥对,否则会导致现存证书不可用。若要重新申请本地证书,必须首先删除本地证书,然后再执行public-key local create命令生成新的密钥对,或使用命令public-key local destroy删除旧的密钥对后再生成新的密钥对。有关公钥相关命令的详细介绍,请参见“安全命令参考”中的“公钥管理”。
由于某些CA服务器不支持PKI实体使用相同的通用名多次申请证书,为了保证自动续签证书成功,请配置automatic-append common-name参数使设备每次都使用新的通用名为PKI实体申请新的证书。
表1-4 自动申请证书
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PKI域视图 |
pki domain domain-name |
- |
配置证书申请为自动方式 |
certificate request mode auto [ password { cipher | simple } string | renew-before-expire days [ reuse-public-key ] [ automatic-append common-name ] ] * |
缺省情况下,证书申请为手工方式 证书申请为自动方式时,可以指定吊销证书时使用的密码,是否需要指定密码是由CA服务器的策略决定的 |
申请证书之前必须保证设备的系统时钟与CA的时钟同步,否则设备可能会错误地认为证书不在有效期内,导致申请证书失败。调整系统时钟的方法请参见“基础配置指导”中的“设备管理”。
配置证书申请方式为手工方式后,需要手工执行申请本地证书的操作。手工申请成功后,设备将把申请到的本地证书自动获取到本地保存。
· 一个PKI域中,只能存在DSA、ECDSA或RSA中一种密钥算法类型的本地证书。采用DSA和ECDSA算法时,一个PKI域中最多只能同时申请和存在一个本地证书;采用RSA算法时,一个PKI域中最多只能同时申请和存在一个用途为签名的RSA算法本地证书和一个用途为加密的RSA算法本地证书。
· 如果一个PKI域中已存在一个本地证书,为保证密钥对与现存证书的一致性,不建议执行命令public-key local create或public-key local destroy创建或删除与现存证书使用的密钥对相同名称的密钥对,否则会导致现存证书不可用。若要重新申请本地证书,必须首先删除本地证书,然后再执行public-key local create命令生成新的密钥对或使用命令public-key local destroy删除旧的密钥对。有关该命令的详细介绍,请参见“安全命令参考”中的“公钥管理”。
· 如果一个PKI域中已存在一个本地证书,则不允许再手工执行在线证书申请操作申请一个与其互斥的证书,以避免因相关配置的修改使得证书与注册信息不匹配。若想重新申请,请先使用pki delete-certificate命令删除本地证书,然后再执行pki request-certificate domain命令。
· 当无法通过SCEP协议向CA在线申请证书时,可以首先通过执行命令pki request-certificate domain pkcs10打印出证书申请信息到终端上,或者通过执行指定pki request-certificate domain pkcs10 filename将证书申请信息保存到指定的文件中,然后再通过带外方式将这些本地证书申请信息发送给CA进行证书申请。
在手工申请本地证书之前,必须保证当前的PKI域中已经存在CA证书且指定了证书申请时使用的密钥对。
· PKI域中的CA证书用来验证获取到的本地证书的真实性和合法性。在证书申请之前,若PKI域中没有CA证书,则需要手工获取CA证书。
· PKI域中指定的密钥对用于为PKI实体申请本地证书,其中的公钥和其他信息交由CA进行签名,从而产生本地证书。
表1-5 手工申请证书
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PKI域视图 |
pki domain domain-name |
- |
配置证书申请为手工方式 |
certificate request mode manual |
缺省情况下,证书申请为手工方式 |
退回系统视图 |
quit |
- |
手工获取CA证书 |
请参见1.7 |
- |
手工申请本地证书或生成PKCS#10证书申请 |
pki request-certificate domain domain-name [ password password ] [ pkcs10 [ filename filename ] ] |
此命令不会被保存在配置文件中 执行本命令时,如果本地不存在PKI域所指定的密钥对,则系统会根据PKI域中指定的名字、算法和长度自动生成对应的密钥对 |
用户可以通过此配置停止正在进行中的证书申请过程。用户在证书申请时,可能由于某种原因需要改变证书申请的一些参数,比如通用名、国家代码、FQDN等,而此时证书申请过程正在进行,为了新的申请不与之前的申请发生冲突,建议先停止之前的申请,再进行新的申请。可以通过display pki certificate request-status命令查询正在进行中的证书申请过程。
另外,删除PKI域也可以停止对应的证书申请过程。
表1-6 停止证书申请过程
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
停止证书申请过程 |
pki abort-certificate-request domain domain-name |
此命令不会被保存在配置文件中 |
获取证书的目的是:将CA签发的与PKI实体所在PKI域有关的证书存放到本地,以提高证书的查询效率,减少向PKI证书发布点查询的次数。
用户通过此配置可以将已存在的CA证书、本地证书或者外部PKI实体证书获取至本地保存。获取证书有两种方式:离线导入方式和在线方式。
· 离线导入方式:通过带外方式(如FTP、磁盘、电子邮件等)取得证书,然后将其导入至本地。如果设备所处的环境中没有证书的发布点、CA服务器不支持通过SCEP协议与设备交互、或者证书对应的密钥对由CA服务器生成,则可采用此方式获取证书。
· 在线方式:从证书发布服务器上在线获取证书并下载至本地,包括通过SCEP协议获取CA证书和通过LDAP协议获取本地或对端证书。
· 如果本地已有CA证书存在,则不允许执行在线方式获取CA证书的操作。若想重新获取,请先使用pki delete-certificate命令删除CA证书与本地证书后,再执行获取CA证书的命令。
· 如果PKI域中已经有本地证书或对端证书,仍然允许执行在线方式获取本地证书或对端证书,获取到的证书直接覆盖已有证书。但对于RSA算法的证书而言,一个PKI域中可以存在一个签名用途的证书和一个加密用途的证书,不同用途的证书不会相互覆盖。
· 如果使能了CRL检查,手工获取证书时会触发CRL检查,如果CRL检查时发现待获取的证书已经吊销,则获取证书失败。
· 设备根据自身的系统时间来判断当前的证书是否还在其有效期内,设备系统时间不准确可能导致设备对于证书有效期的判断出现误差或错误,例如认为实际还在有效期内证书已过期,因此请确保设备系统时间的准确性。
获取本地证书或对端证书之前必须完成以下操作:
· 在线获取本地证书和对端证书是通过LDAP协议进行的,因此在线获取本地证书或对端证书之前必须完成PKI域中指定LDAP服务器的配置。
· 离线导入证书之前,需要通过FTP、TFTP等协议将证书文件传送到设备的存储介质中。如果设备所处的环境不允许使用FTP、TFTP等协议,则可以直接采用在终端上粘贴证书内容的方式导入,但是粘贴的证书必须是PEM(Privacy Enhanced Mail,增强保密邮件)格式的,因为只有PEM格式的证书内容为可打印字符。
· 只有存在签发本地证书的CA证书链才能成功导入本地证书,这里的CA证书链可以是保存在PKI域中的,也可以是本地证书中携带的。若设备和本地证书中都没有CA证书链,则需要预先获取到CA证书链。导入对端证书时,需要满足的条件与导入本地证书相同。
· 离线导入含有被加密的密钥对的本地证书时,需要输入加密口令。请提前联系CA服务器管理员取得该口令。
表1-7 手工获取证书
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
手工获取证书 |
离线导入方式 |
pki import domain domain-name { der { ca | local | peer } filename filename | p12 local filename filename | pem { ca | local | peer } [ filename filename ] } |
pki retrieve-certificate命令不会被保存在配置文件中 |
在线方式 |
pki retrieve-certificate domain domain-name { ca | local | peer entity-name } |
在使用每一个证书之前,必须对证书进行验证。证书验证包括检查本地、CA证书是否由可信的CA签发,证书是否在有效期内,证书是否未被吊销。申请证书、获取证书以及应用程序使用PKI功能时,都会自动对证书进行验证,因此一般不需要使用命令行手工进行证书验证。如果用户希望在没有任何前述操作的情况下单独执行证书的验证,可以手工执行证书验证。
配置证书验证时可以设置是否必须进行CRL检查。CRL检查的目的是查看PKI实体的证书是否被CA吊销,若检查结果表明PKI实体的证书已经被吊销,那么该证书就不再被其它PKI实体信任。
· 如果配置为开启CRL检查,则需要首先从CRL发布点获取CRL。PKI域中未配置CRL发布点的URL时,从该待验证的证书中获取发布点信息:优先获取待验证的证书中记录的发布点,如果待验证的证书中没有记录发布点,则获取CA证书中记录的发布点(若待验证的证书为CA证书,则获取上一级CA证书中记录的发布点)。如果无法通过任何途径得到发布点,则通过SCEP协议获取CRL。由于设备通过SCEP获取CRL是在获取到CA证书和本地证书之后进行,因此该方式下必须保证设备已经获取到CA证书和本地证书。开启了CRL检查的情况下,如果PKI域中不存在相应的CRL、CRL获取失败、或者CRL检查时发现待获取的证书已经吊销,则手动申请证书、获取证书的操作将会失败。
· 如果配置为关闭CRL检查,则不需要获取CRL。
需要注意的是,验证一个PKI域中的CA证书时,系统会逐级验证本域CA证书链上的所有CA证书的有效性,因此需要保证设备上存在该CA证书链上的所有上级CA证书所属的PKI域。验证某一级CA证书时,系统会根据该CA证书的签发者名(IssuerName)查找对应的上一级CA证书,以及上一级CA证书所属的(一个或多个)PKI域。若查找到了相应的PKI域,且该PKI域中开启了CRL检查,则根据该PKI域中的配置对待验证的CA证书进行吊销检查,否则不检查待验证的CA证书是否被吊销。检查CA证书链中的CA(根CA除外)是否被吊销后,从根CA逐级验证CA证书链的签发关系。
表1-8 开启CRL检查的证书验证
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PKI域视图 |
pki domain domain-name |
- |
(可选)配置CRL发布点的URL |
crl url url-string |
缺省情况下,未指定CRL发布点的URL |
开启CRL检查 |
crl check enable |
缺省情况下,CRL检查处于开启状态 |
退回系统视图 |
quit |
- |
获取CA证书 |
请参见1.7 |
在进行本地证书验证操作之前必须首先获取CA证书 |
(可选)获取CRL并下载至本地 |
pki retrieve-crl domain domain-name |
验证非根CA证书和本地证书时,如果PKI域中没有CRL,系统会自动获取CRL再进行验证;如果PKI域已经存在CRL,则可以继续获取CRL,获取到的新CRL会覆盖已有CRL 获取到的CRL不一定是本域CA签发的,但肯定是本域CA证书链上的一个CA证书签发的 |
验证证书的有效性 |
pki validate-certificate domain domain-name { ca | local } |
- |
表1-9 关闭CRL检查的证书验证
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PKI域视图 |
pki domain domain-name |
- |
关闭CRL检查 |
undo crl check enable |
缺省情况下,CRL检查处于开启状态 |
退回系统视图 |
quit |
- |
获取CA证书 |
请参见1.7 |
在进行本地证书验证操作之前必须首先获取CA证书 |
验证证书的有效性 |
pki validate-certificate domain domain-name { ca | local } |
此命令不会被保存在配置文件中 |
重新配置了证书或CRL的存储路径后为了防止证书或CRL文件的丢失,重启或关闭设备前一定要保存配置。
获取到本地的证书和CRL有默认存储路径,但同时也允许用户根据自己的需要修改证书文件和CRL文件的存储路径。证书和CRL的存储路径可以指定为不同的路径。
修改了证书或CRL的存储目录后,原存储路径下的证书文件(以.cer和.p12为后缀的文件)和CRL文件(以.crl为后缀的文件)将被移动到新路径下保存。
表1-10 配置证书和CRL的存储路径
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置证书和CRL的存储路径 |
pki storage { certificates | crls } dir-path |
缺省情况下,证书和CRL的存储路径为设备存储介质上的PKI目录 |
以PKCS12格式导出所有证书时,PKI域中必须有本地证书,否则会导出失败。
PKI域中已存在的CA证书、本地证书可以导出到文件中保存或导出到终端上显示,导出的证书可以用于证书备份或供其它设备使用。
· 导出证书时若不指定文件名,则表示要将证书导出到终端上显示,这种方式仅PEM格式的证书才支持。
· 导出证书时若指定文件名,则表示证书将导出到指定文件中保存。导出RSA算法类型的本地证书时,设备上实际保存证书的证书文件名称并不一定是用户指定的名称,它与本地证书的密钥对用途相关,具体的命名规则请参见命令手册。
表1-11 导出证书
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
导出DER格式的证书 |
pki export domain domain-name der { all | ca | local } filename filename |
根据需要选择其中一个或多个 |
导出PKCS12格式的证书 |
pki export domain domain-name p12 { all | local } passphrase p12-key filename filename |
|
导出PEM格式的证书 |
pki export domain domain-name pem { { all | local } [ { 3des-cbc | aes-128-cbc | aes-192-cbc | aes-256-cbc | des-cbc } pem-key ] | ca } [ filename filename ] |
删除CA证书时将同时删除所在PKI域中的本地证书、所有对端证书以及CRL。
由CA颁发的证书都会设置有效期,证书生命周期的长短由签发证书的CA来确定。当用户的私钥被泄漏或证书的有效期快到时,应该重新申请新的证书。证书过期或希望重新申请证书时,可以通过此配置删除已经存在的本地证书、CA证书或对端证书。
重新申请证书之前,应该先使用命令public-key local destroy删除旧的密钥对,再使用public-key local create生成新的密钥对。相关命令的详细介绍可参考“安全命令参考”中的“公钥管理”。
表1-12 配置删除证书
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置删除证书 |
pki delete-certificate domain domain-name { ca | local | peer [ serial serial-num ] } |
如果未指定序列号,则删除所有对端证书 |
通过配置证书的访问控制策略,可以对安全应用中的用户访问权限进行进一步的控制,保证了与之通信的服务器端的安全性。例如,在HTTPS(Hypertext Transfer Protocol Secure,超文本传输协议的安全版本)应用中,HTTPS服务器可以通过引用证书访问控制策略,根据自身的安全需要对客户端的证书合法性进行检测。
一个证书访问控制策略中可以定义多个证书属性的访问控制规则(通过rule命令配置),每一个访问控制规则都与一个证书属性组关联。一个证书属性组是一系列属性规则(通过attribute命令配置)的集合,这些属性规则是对证书的颁发者名、主题名以及备用主题名进行过滤的匹配条件。
如果一个证书中的相应属性能够满足一条访问控制规则所关联的证书属性组中所有属性规则的要求,则认为该证书和该规则匹配。如果一个证书访问控制策略中有多个规则,则按照规则编号从小到大的顺序遍历所有规则,一旦证书与某一个规则匹配,则立即结束检测,不再继续匹配其它规则。
规则的匹配结果决定了证书的有效性,具体如下:
· 如果证书匹配到的规则中指定了permit关键字,则该证书将被认为通过了访问控制策略的检测且有效。
· 如果证书匹配到的规则中指定了deny关键字,则该证书将被认为未通过访问控制策略的检测且无效。
· 若遍历完所有规则后,证书没有与任何规则匹配,则该证书将因不能通过访问控制策略的检测而被认为无效。
· 若证书访问控制策略下某访问控制规则关联的证书属性组不存在,或者该证书属性组没有配置任何属性,则认为被检测的证书都能够与此规则匹配。
· 若安全应用(如HTTPS)引用的证书访问控制策略不存在,则认为该应用中被检测的证书有效。
表1-13 配置证书访问控制策略
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建证书属性组,并进入证书属性组视图 |
pki certificate attribute-group group-name |
缺省情况下,不存在证书属性组 |
(可选)配置证书颁发者名、证书主题名及备用主题名的属性规则 |
attribute id { alt-subject-name { fqdn | ip } | { issuer-name | subject-name } { dn | fqdn | ip } } { ctn | equ | nctn | nequ} attribute-value |
缺省情况下,对证书颁发者名、证书主题名及备用主题名没有限制 |
退回系统视图 |
quit |
- |
创建证书访问控制策略,并进入证书访问控制策略视图 |
pki certificate access-control-policy policy-name |
缺省情况下,不存在证书访问控制策略 |
配置证书属性的访问控制规则 |
rule [ id ] { deny | permit } group-name |
缺省情况下,不存在证书属性的访问控制规则,认为所有证书都可以通过该控制策略的过滤 一个证书访问控制策略中可配置多个访问控制规则 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后PKI的运行情况,通过查看显示信息验证配置的效果。
表1-14 PKI显示和维护
操作 |
命令 |
显示证书内容 |
display pki certificate domain domain-name { ca | local | peer [ serial serial-num ] } |
显示PKI域的证书续签状态 |
display pki certificate renew-status [ domain domain-name ] |
显示证书申请状态 |
display pki certificate request-status [ domain domain-name ] |
显示存储在本地的CRL |
display pki crl domain domain-name |
显示证书属性组的配置信息 |
display pki certificate attribute-group [ group-name ] |
显示证书访问控制策略的配置信息 |
display pki certificate access-control-policy [ policy-name ] |
· 当采用Windows Server作为CA时,需要安装SCEP插件。在这种情况下,配置PKI域时,需要使用certificate request from ra命令指定PKI实体从RA注册申请证书。
· 当采用RSA Keon软件时,不需要安装SCEP插件。在这种情况下,配置PKI域时,需要使用certificate request from ca命令指定PKI实体从CA注册申请证书。
· 当采用OpenCA软件时,需要启用SCEP功能,在这种情况下,配置PKI域时,需要使用certificate requeset from ra命令指定PKI实体从RA注册申请证书。
获取CA证书失败。
可能有以下原因:
· 网络连接故障,如网线折断,接口松动;
· 没有设置信任的CA名称;
· 证书申请的注册受理机构服务器URL位置不正确或未配置;
· 设备的系统时钟与CA的时钟不同步;
· 未指定CA服务器可接受的PKI协议报文的源IP地址,或者指定的地址不正确;
· 指纹信息不合法。
· 排除物理连接故障;
· 查看各必配项是否都正确配置;
· 可通过ping命令测试注册服务器是否连接正常;
· 保持系统时钟与CA同步;
· 与CA服务器管理员联系,并保证配置正确的源IP地址;
· 在证书服务器上查看指纹信息是否合法。
获取本地证书失败。
可能有以下原因:
· 网络连接故障;
· 执行获取操作之前PKI域中没有CA证书;
· 没有配置LDAP服务器或者配置错误;
· PKI域没有指定申请使用的密钥对,或者指定的密钥对与待获取的本地证书不匹配;
· PKI域中没有引用PKI实体配置,或PKI实体配置不正确;
· 开启了CRL检查,但是本地没有CRL且无法获取到CRL;
· 未指定CA服务器可接受的PKI协议报文的源IP地址,或者指定的地址不正确;
· 设备时钟与CA服务器的时钟不同步。
· 排除物理连接故障;
· 获取或者导入CA证书;
· 配置正确的LDAP服务器;
· 在PKI域中指定申请使用的密钥对,生成指定的密钥对,并使其与待获取的本地证书匹配;
· PKI域中引用正确的PKI实体,并正确配置该PKI实体;
· 获取CRL;
· 与CA服务器管理员联系,并保证配置正确的源IP地址;
· 保持系统时钟与CA一致。
手工申请证书失败。
可能有以下原因:
· 网络连接故障,如网线折断,接口松动;
· 执行申请操作之前PKI域中没有CA证书;
· 证书申请的注册受理机构服务器URL位置不正确或未配置;
· 没有配置证书申请注册受理机构或配置不正确;
· 没有配置PKI实体DN中必配参数或者配置参数不正确;
· PKI域中没有指定证书申请使用的密钥对,或者PKI中指定的密钥对在申请过程中已被修改;
· 当前PKI域中有互斥的证书申请程序正在运行;
· 未指定CA服务器可接受的PKI协议报文的源IP地址,或者指定的地址不正确;
· 设备时钟与CA服务器的时钟不同步。
· 排除物理连接故障;
· 获取或者导入CA证书;
· 可通过ping命令测试注册服务器是否连接正常;
· 配置正确的证书申请注册受理机构服务器URL;
· 查看CA/RA注册策略,并对相关的PKI实体DN属性进行正确配置;
· 在PKI域中指定证书申请使用的密钥对,或者删除设备上PKI域中指定的的密钥对并重新申请本地证书;
· 使用pki abort-certificate- request domain命令停止正在运行的证书申请程序;
· 与CA服务器管理员联系,并保证配置正确的源IP地址;
· 保持系统时钟与CA一致。
获取CRL失败。
可能有以下原因:
· 网络连接故障,如网线折断,接口松动;
· 获取CRL之前未先取得CA证书;
· 未设置CRL发布点位置,且不能从PKI域中CA证书或本地证书中获得正确的发布点;
· 设置的CRL发布点位置不正确;
· 不能获取CRL发布点的情况下,通过SCEP协议获取CRL,但此时PKI域中不存在本地证书,或本地证书的密钥对已被修改,或PKI域中没有配置正确的证书申请URL;
· CRL发布点的URL配置中包含不完整的地址(没有主机名或主机地址)且PKI域中没有配置LDAP服务器或者配置不正确;
· 未指定CA服务器可接受的PKI协议报文的源IP地址,或者指定的地址不正确。
· 排除物理连接故障;
· 获取或导入CA证书;
· 设置正确CRL发布点位置:配置包含完整地址的CRL发布点的URL或在PKI域中配置正确的LDAP服务器;
· 在无法获取CRL发布点的情况下,配置正确的证书申请URL,并保证已经获取了本地证书,且本地保存的密钥对的公钥与本地证书的公钥匹配;
· 在CA上发布CRL;
· 与CA服务器管理员联系,并保证配置正确的源IP地址。
导入证书失败。
可能有以下原因:
· 开启了CRL检查,但是本地没有CRL且无法获取到CRL;
· 指定的导入格式与实际导入的文件格式不一致。
· 执行undo crl check enable命令,关闭CRL检查;
· 请确认导入的文件格式并选择正确的导入格式。
导入证书失败。
可能有以下原因:
· PKI域中没有CA证书且导入的本地证书中不含CA证书链;
· 开启了CRL检查,但是本地没有CRL且无法获取到CRL;
· 指定的导入格式与实际导入的文件格式不一致;
· 设备上和证书中都没有该本地证书对应的密钥对;
· 证书已经被吊销;
· 证书不在有效期;
· 系统时钟设置错误。
· 获取或者导入CA证书;
· 执行undo crl check enable命令,关闭CRL检查,或者先获取CRL;
· 请确认导入的文件格式并选择正确的导入格式;
· 请导入包含私钥内容的证书文件;
· 导入未被吊销的证书;
· 导入还在有效期内的证书;
· 请重新设置正确的系统时钟。
导出证书失败。
可能有以下原因:
· 以PKCS#12格式导出所有证书时PKI域中没有本地证书;
· 用户所设置的导出路径不存在;
· 用户所设置的导出路径不合法;
· 要导出的本地证书的公钥和它所属PKI域中的密钥对的公钥部分不匹配;
· 设备磁盘空间已满。
· 获取或申请本地证书;
· 用mkdir命令创建用户所需路径;
· 设置正确的导出路径;
· 在PKI域中配置匹配的密钥对;
· 清理设备磁盘空间。
设置证书或CRL存储路径失败。
可能有以下原因:
· 用户所设置的证书或CRL存储路径不存在;
· 用户所设置的证书或CRL存储路径不合法;
· 设备磁盘空间已满。
· 用mkdir命令创建用户所需路径;
· 设置正确的的证书或CRL存储路径;
· 清理设备磁盘空间。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!