关于数字证书
数字证书是一种用于身份验证的数字识别方式。数字证书包括用于识别设备或用户的信息,例如名称、序列号、公司、部门或 IP 地址。CA 负责管理证书请求和颁发数字证书。CA 是负责“签署”证书以验证证书真实性的可信机构,旨在确保设备或用户的身份真实有效。
数字证书还包括用户或设备的公钥副本。CA 可以是可信的第三方(例如 VeriSign),也可以是组织内建立的私有(内部)CA。CA 在 PKI(使用公钥或私钥加密以确保安全性)的情景下颁发数字证书。
如果使用数字证书进行身份验证,则 ASA 上必须存在至少一个身份证书及其颁发 CA 证书。此配置允许多个身份、根和证书层次结构。ASA 根据 CRL(也称为权限吊销列表)评估第三方证书,从身份证书一直到从属证书颁发机构链。
以下是几种不同类型的可用数字证书的说明:
-
CA 证书用于签署其他证书。它是自签名证书,也称为根证书。由另一个 CA 证书颁发的证书称为从属证书。
-
CA 还会颁发身份证书,这是特定系统或主机的证书。
-
代码签名证书是用于创建数字签名以签署代码的特殊证书,经过签署的代码会透露证书源。
本地 CA 在 ASA 上集成独立的证书颁发机构功能,并且会部署证书,对已颁发的证书提供安全的吊销检查。本地 CA 凭借通过网站登录页面进行的用户注册提供安全、可配置的内部机构进行证书身份验证。
注 |
CA 证书和身份证书适用于站点间 VPN 连接和远程访问 VPN 连接。本文档中的程序是指 ASDM GUI 中使用的远程访问 VPN。 |
提示 |
有关包括证书配置和负载均衡的情景示例,请参阅以下 URL:https://supportforums.cisco.com/docs/DOC-5964。 |
公钥加密
通过公钥加密实现的数字签名为设备和用户提供了一种身份验证方法。在 RSA 加密系统等公钥加密中,每位用户都有一个包含公钥和私钥的密钥对。这一对密钥相互补充,用其中一个密钥加密的任何内容都可用另一个密钥解密。
简言之,使用私钥加密数据时会形成一个签名。此签名附加在数据中并发送给接收者。接收者对数据应用发送者的公钥。如果随数据一起发送的签名与对数据应用公钥的结果一致,就会确立消息的有效性。
此过程的前提是接收者拥有发送者的公钥副本而且非常确定此密钥属于发送者,而不是伪装成发送者的其他人。
获取发送方公钥通常是在外部处理或通过安装时执行的操作处理。例如,默认情况下,大多数 Web 浏览器都使用若干 CA 的根证书进行配置。对于 VPN,作为 IPsec 组件的 IKE 协议可使用数字签名在设置安全关联之前验证对等设备身份。
证书可扩展性
在没有数字证书的情况下,必须手动为每个与其通信的对等体配置各自的 IPSec 对等体;因此,每个添加到网络的新对等体都会要求对需要与其安全通信的每个对等体进行配置更改。
使用数字证书时,系统将向 CA 注册每个对等体。两个对等体试图进行通信时,它们将交换证书并以数字方式签署数据以进行相互身份验证。新对等体添加到网络时,会向 CA 注册该对等体,其他任何对等体都不需要修改。新对等体尝试进行 IPSec 连接时,证书将自动交换并且对等体可进行身份验证。
通过 CA,对等体可将证书发送到远程对等体并执行一些公钥加密,从而自行向远程对等体进行身份验证。每个对等体发送由 CA 颁发的唯一证书。此过程之所以适用,是因为每个证书会封装关联对等体的公钥,每个证书由 CA 进行身份验证,且所有参与对等体都将 CA 视为身份验证机构。此过程称为带 RSA 签名的 IKE。
对等体可继续为多个 IPsec 会话发送其证书,并可向多个 IPSec 对等体发送证书,直到证书过期。证书过期后,对等体管理员必须从 CA 获取新的证书。
CA 还可以为不再参与 IPsec 的对等体吊销证书。已吊销的证书无法被其他对等体识别为有效证书。吊销的证书列在 CRL 中,在从其他对等体接收证书之前,每个对等体都可以对其进行检查。
某些 CA 在其实施过程中会使用 RA。RA 是一种用作 CA 的代理的服务器,以便 CA 功能可以在 CA 不可用时继续使用。
密钥对
密钥对包括 RSA 或椭圆曲线签名算法 (ECDSA) 密钥,具有以下特征:
-
RSA 密钥可用于 SSH 或 SSL。
-
SCEP 注册支持 RSA 密钥的认证。
-
最大 RSA 密钥大小为 4096,默认值为 2048。
-
最大 ECDSA 密钥长度为 521,默认值为 384。
-
您可以生成一个用于签名和加密的通用 RSA 密钥对,也可以为每种用途生成单独的 RSA 密钥对。单独的签名和加密密钥有助于减少密钥泄露,因为 SSL 使用密钥进行加密,但不签名。但是,IKE 使用密钥进行签名,但不加密。通过为每种用途使用单独的密钥,泄露密钥的风险降至最低。
信任点
通过信任点,您可以管理并跟踪 CA 和证书。信任点表示 CA 或身份对。信任点包括 CA 的身份、CA 特定配置参数,以及与一个注册的身份证书的关联。
定义信任点之后,您可以在要求指定 CA 的命令中根据名称对其进行引用。您可以配置多个信任点。
注 |
如果思科 ASA 有多个共享同一个 CA 的信任点,则只有其中一个共享该 CA 的信任点可用来验证用户证书。要控制使用哪个共享 CA 的信任点来验证该 CA 颁发的用户证书,请使用 support-user-cert-validation 命令。 |
对于自动注册,信任点必须使用注册 URL 进行配置,并且信任点代表的 CA 必须在网络中可用且必须支持 SCEP。
您可以 PKCS12 格式导出和导入密钥对,以及与某个信任点关联的已颁发证书。此格式对于在其他 ASA 上手动复制信任点配置来说非常有用。
证书注册
ASA 的每个信任点都需要一个 CA 证书,自身需要一个或两个证书,具体取决于信任点所用的密钥配置。如果信任点使用单独的 RSA 密钥进行签名和加密,则 ASA 需要两个证书,每个任务一个。在其他密钥配置中,只需要一个证书。
ASA 支持使用 SCEP 自动注册,也支持手动注册,后者可让您将 base-64 编码的证书直接复制到终端。对于站点间 VPN,您必须注册每个 ASA。对于远程访问 VPN,则必须注册每个 ASA 以及每个远程访问 VPN 客户端。
SCEP 请求的代理
ASA 可以代理 AnyConnect 和第三方 CA 之间的 SCEP 请求。如果 ASA 用作代理,则 CA 只需要允许它访问即可。为使 ASA 提供此服务,用户必须在 ASA 发送注册请求之前使用 AAA 支持的任何方法进行身份验证。您还可以使用主机扫描和动态访问策略执行注册资格规则。
ASA 仅对 AnyConnect SSL 或 IKEv2 VPN 会话支持此功能。它支持所有符合 SCEP 的 CA,包括 Cisco IOS CS、Windows Server 2003 CA 和 Windows Server 2008 CA。
无客户端(基于浏览器)访问不支持 SCEP 代理,但 WebLaunch(无客户端启动的 AnyConnect)则支持该代理。
ASA 不支持证书的轮询。
ASA 支持此功能的负载均衡。
撤销检查
颁发证书后,该证书在固定时期内有效。有时,CA 会在此时期到期前吊销证书,例如,因为安全问题、名称更改或关联。CA 会定期发布签署的已吊销证书列表。启用撤销检查会强制 ASA 检查每当它使用证书进行身份验证时,CA 都尚未撤销证书。
启用撤销检查后,ASA 会在 PKI 证书验证过程中检查证书撤销状态,可以使用 CRL 和/或 OCSP 检查。仅当第一种方法返回错误时(例如,指示服务器不可用时),才会使用 OCSP。
通过 CRL 检查,ASA 将检索、分析和缓存 CRL,从而提供包含其证书序列号的撤销(以及未撤销)证书完整列表。ASA 根据 CRL(也称为授权撤销列表)评估证书,从身份证书一直到从属证书颁发机构链。
OCSP 提供了一种更具可扩展性的吊销状态检查方法,此方法通过验证机构对证书状态进行本地化,而验证机构会查询特定证书的状态。
支持的 CA 服务器
ASA 支持以下 CA 服务器:
思科 IOS CS、ASA 本地 CA 和符合 X.509 标准的第三方 CA 供应商,包括但不限于:
-
Baltimore Technologies
-
Entrust
-
Digicert
-
Geotrust
-
GoDaddy
-
iPlanet/Netscape
-
Microsoft 证书服务
-
RSA Keon
-
Thawte
-
VeriSign
CRL
CRL 为 ASA 提供了一种方法来确定某个有效期内的证书是否已被证书颁发机构 (CA) 吊销。CRL 配置是信任点配置的一部分。
进行证书身份验证时,您可以使用 revocation-check crl 命令将 ASA 配置为强制进行 CRL 检查。您也可以使用 revocation-check crl none 命令将 CRL 检查设为可选检查,从而在 CA 无法提供更新后的 CRL 数据时,证书身份验证也会成功。
注 |
恢复了在 9.13(1) 中删除的 revocation-check crl none。 |
ASA 可使用 HTTP、SCEP 或 LDAP 从 CA 检索 CRL。为每个信任点检索的 CRL 会在为每个信任点配置的时间内一直缓存。
注 |
虽然 CRL 服务器使用 HTTP 标志“Connection:Keep-alive”进行响应以指示持久连接,但 ASA 不会请求支持持久连接。更改 CRL 服务器上的设置,以便在发送列表时以“Connection: Close”响应。 |
当 ASA 缓存 CRL 的时间超过配置的 CRL 缓存时间时,ASA 会认为该 CRL 的版本过旧而不可靠(即“过时”)。下次证书身份验证要求检查过时 CRL 时,ASA 会尝试检索更新版本的 CRL。
如果超出 CRL 16MB 的大小限制,您可能收到针对用户连接/证书的 revocation check 故障。
ASA 缓存 CRL 的时间由以下两个因素确定:
-
使用 cache-time 命令指定的分钟数。默认值为 60 分钟。
-
检索到的 CRL 中的 NextUpdate 字段,CRL 中可能没有该字段。您可使用 enforcenextupdate 命令控制 ASA 是否需要和使用 NextUpdate 字段。
ASA 通过以下方式使用这两个因素:
-
如果不需要 NextUpdate 字段,则 会在经过由 cache-time 命令定义的时间长度后将 CRL 标记为过时。
-
如果需要 NextUpdate 字段,则 ASA 会在由 cache-time 命令和 NextUpdate 字段指定的两个时间中较早的那个时间将 CRL 标记为过时。例如,如果 cache-time 命令设置为 100 分钟,而 NextUpdate 字段指定下一次更新是在 70 分钟后,则 ASA 会将 CRL 标记为在 70 分钟内过时。
如果 ASA 的内存不足以存储为给定信任点缓存的所有 CRL,它将删除最近最少使用的 CRL 来为新检索的 CRL 腾出空间。大型 CRL 需要大量计算开销来进行解析。因此,为了获得更好的性能,请使用多个较小的 CRL,而不是几个大型 CRL,或者最好使用 OCSP。
请参阅以下缓存大小:
-
单情景模式 - 128MB
-
多情景模式 - 每个情景 16MB
OCSP
OCSP 为 ASA 提供了一种方法来确定某个有效期内的证书是否已被证书颁发机构 (CA) 吊销。OCSP 配置是信任点配置的一部分。
OCSP 在 ASA 查询特定证书状态的验证颁发机构(一台 OCSP 服务器,又称响应方)上本地化证书状态。相比 CRL 检查,此方法可提供更好的可扩展性和更新的吊销状态,并且可帮助组织进行大型 PKI 安装部署和扩展安全网络。
注 |
ASA 会为 OCSP 响应留出 5 秒的时间偏差。 |
进行证书身份验证时,您可以使用 revocation-check ocsp 命令将 ASA 配置为强制进行 OCSP 检查。您也可以使用 revocation-check ocsp none 命令将 OCSP 检查设为可选检查,从而在验证机构无法提供更新后的 OCSP 数据时,证书身份验证也会成功。
注 |
在 9.13(1) 中删除的 revocation-check ocsp none 已恢复。 |
OCSP 提供三种定义 OCSP 服务器 URL 的方法。ASA 按以下顺序使用这些服务器:
-
使用 match certificate 命令在匹配证书覆盖规则中定义的 OCSP URL。
-
使用 ocsp url 命令配置的 OCSP URL。
-
客户端证书的 AIA 字段。
注 |
要将信任点配置为验证自签名 OCSP 响应方证书,请将自签名响应方证书作为可信 CA 证书导入其自己的信任点。然后,在验证信任点的客户端证书中配置 match certificate 命令,以使用包括自签名 OCSP 响应方证书的信任点来验证响应器证书。使用同一程序配置客户端证书的验证路径外部配置验证响应方证书。 OCSP 服务器(响应方)证书通常会签署 OCSP 响应。收到响应后,ASA 会尝试验证响应方证书。CA 通常会将 OCSP 响应方证书的有效期设置为相对较短的时间以将受危害的可能性降至最低。CA 通常还会在响应方证书中包含 ocsp-no-check 扩展,表明此证书不需要进行吊销状态检查。但如此此扩展不存在,ASA 将尝试使用信任点中指定的相同方法检查吊销状态。如果响应方证书无法验证,则吊销检查失败。为了避免出现这种可能性,请使用 revocation-check none 命令来配置验证信任点的响应方证书,并使用 revocation-check ocsp 命令来配置客户端证书。 |
证书和用户登录凭证
下一节介绍使用证书和用户登录凭证(用户名和密码)进行身份验证和授权的不同方法。这些方法适用于 IPsec、AnyConnect 和无客户端 SSL VPN。
在所有情况下,LDAP 授权都不会使用密码作为凭证。RADIUS 授权对所有用户使用公用密码或使用用户名作为密码。
用户登录凭证
身份验证和授权的默认方法是使用用户登录凭证。
-
身份验证
-
通过隧道组(也称为 ASDM 连接配置文件)中的身份验证服务器组设置进行启用
-
使用用户名和密码作为凭证
-
-
授权
-
通过隧道组(也称为 ASDM 连接配置文件)中的授权服务器组设置进行启用
-
使用用户名作为凭证
-
证书
如果配置了数字证书,ASA 首先会验证该证书。但是,它不会使用证书的任何 DN 作为用户名进行身份验证。
如果启用了身份验证和授权,ASA 会使用用户登录凭证进行用户身份验证和授权。
-
身份验证
-
通过身份验证服务器组设置进行启用
-
使用用户名和密码作为凭证
-
-
授权
-
通过授权服务器组设置进行启用
-
使用用户名作为凭证
-
如果禁用身份验证,但启用授权,ASA 将使用主 DN 字段进行授权。
-
身份验证
-
通过身份验证服务器组设置进行禁用(设置为 None)
-
未使用凭证
-
-
授权
-
通过授权服务器组设置进行启用
-
使用证书主 DN 字段的用户名值作为凭证
-
注 |
如果证书中不存在主 DN 字段,ASA 将使用辅助 DN 字段值作为授权请求的用户名。 |
以包含以下 Subject DN 字段和值的用户证书为例:
Cn=anyuser,OU=sales;O=XYZCorporation;L=boston;S=mass;C=us;ea=anyuser@example.com
如果主 DN = EA(邮件地址),辅助 DN = CN(公共名称),则授权请求中使用的用户名将为 anyuser@example.com。