5.8为无客户端访问VPN使用一个外部和内部的CA
CCNP安全VPN 642-648认证考试指南(第2版)
你可能已经看到了,在SSL隧道的协商阶段,服务器向客户端发送一份它自己的数字证书的拷贝以实现被客户端验证的目的。在同一个过程中,服务器也会向客户端发出请求以得到一份客户端证书文件的拷贝,客户端如果安装了证书的话,它会向服务器发送它自己的一份证书拷贝以使服务器能够验证客户端。
可以使用两个选项为客户端验证部署证书:可以使用一个内部CA,在ASA上配置它并启动它以产生你自己的证书文件并将它们分发给客户端;也可以使用一个外部的/商业的CA来生成证书。
与使用内部CA相比,使用一个外部CA的主要好处就是公共的根CA被浏览器厂商广泛地支持,这就意味着从这些公共的CA所购买的证书将被客户端的浏览器所信任,当远程用户试图连接时不会向用户显示任何警告错误。
当你将ASA配置为一个本地的CA服务器时,你会失去故障切换的功能。本地CA和故障切换的功能不能同时在ASA上存在,但是对于IOS的设备来说,它支持PKI HA。
表5-4对使用一个内部CA或者外部CA的常见的优点和缺点作了一个对比。
注意:在CA服务器能被启动之前,你必须在CA Server的窗口中输入一个密码短语。这个密码短语可以是你选择的任何口令,但是长度至少是8个字符。也要注意这里的enabled意味着被激活,和Enable单选按钮无关,而是和Apply按钮有关。为了配置密码短语,你必须单击Enable。
表5-5列出了可用的字段,你可以为自己的部署修改它们来定制本地的CA服务器。本表也包括了这些字段对应的CLI部分(输入crypto ca server命令后,进入(config-ca-server)的配置模式)。
当建立CA服务器后,创建它的选项就被清除了,替代它的是一个窗口下部的删除CA服务器的按钮。如果选择删除服务器这个选项,那么所有的配置、密钥对和所有被服务器生成的证书文件都会被删除,你不能重新建立或者导入它们。
当启动CA服务器后,可以将用户添加到数据库中使之用于证书的生成。在ASDM中,进入Configuration > Remote Access VPN > Certificate Management > Local Certificate Authority > Manage User Database。如果没有启动CA服务器就想访问这个窗口,则不会出现此窗口,你不能从数据库中查看/编辑/添加/删除用户。
默认情况下,本地CA数据库不含有任何用户,所以需要为数据库添加一些用户。通过单击Add按钮来完成这个任务。在新的Add User窗口中,输入下面这些详细信息。
Username:用户的名字。
Email ID:用户的邮件地址,申请证书的邀请函将被发往这个邮件地址。
Subject (DN String):含有用户信息的字符串,它被输入到证书的Subject字段内。我们可以添加的可用属性如下。
Common Name (CN)
Department (OU)
Company name (O)
Country (C)
State (St)
Location (L)
Email address (EA)
Allow Enrollment:允许用户在线完成他们的证书申请而无需管理员进行手动干预(默认已被选择)。
当输入所有你知道的信息后,单击Add User按钮。为了允许用户完成这个过程,单击Manage User Database窗口内的Email OTP按钮,那么一个申请证书的邀请函将被发往在用户的Email ID字段中输入的那个邮件地址,信中还有一个用于验证用途的OTP。
也可以通过CLI,在特权EXEC的模式下,使用crypto ca server user-db add username_dn _dn_email _emailaddress的命令将新用户添加到ASA的本地CA数据库。当使用user-db add命令添加用户后,接着你必须使用crypto ca server user-db allow username命令允许用户申请证书。接着,为了向用户发送他的OTP通知邮件,使用crypto ca server user-db email-otp username命令。例5-1显示了创建用户、启动用户申请证书和向用户发送OTP邮件所需的命令。
例5-1通过CLI ASA本地CA服务器创建用户
现在用户可以单击包含在邮件中的链接并访问这个链接以下载他们的口令。如图5-13所示,为了确认他们的身份,用户必须首先输入邮件中所提示的用户名和OTP。
你面临两个选项。你可以选择吊销用户的证书,例如,用户已经离开了公司或者证书的数据变为无效(例如,用户所在的部门或者用户名发生了变化,需要为用户生成一个新的证书)。你也可以取消被吊销的证书,允许用户再次使用它以被服务器验证。能够吊销证书或者撤销被吊销的证书的选项为用户提供了极大的灵活性。例如,如果你再次雇佣了同一个合同工或者临时工,每次他们来的时候,你可以取消被吊销的证书,而他们在合同到期离开后,你可以吊销证书直到下一次再次需要这个证书时再取消它的吊销状态。
使用CLI吊销证书或者取消之前被吊销的用户证书,需在特权的EXEC命令下分别输入下面的命令:
Revoke:crypto ca server revokecertificate serial number
Unrevoke:crypto ca server unrevokecertificate serial number
其次,为了从用户数据库中删除这个用户,你可以在特权的EXEC模式下使用crypto ca server user-db remove username命令。
你可以使用show crypto ca server user-db命令察看当前被配置的用户列表和他们的证书/申请证书的状态,如例5-3所示。
例5-3察看本地CA服务器用户数据库的内容
正如你在建立用户账号阶段所看到的,你可以输入特定于证书的属性(例如,部门和公司的名字)。当客户端证书被服务器验证时,ASA可以使用这个信息来决定给连接用户分配的连接配置文件。
这个行为是通过证书到连接配置文件的映射实现的。通过Configure > Remote Access VPN > Advanced > Certificate to SSL VPN Connection Profile Maps可以配置证书映射。这个窗口有两部分,在这里我们可以定义证书映射的设置。
Certificate to Connection Profile Maps(证书到连接配置文件的映射)。
Mapping Criteria(映射标准)。
为了配置映射标准,首先必须在Certificate to Connection Profile Maps下面建立一个证书映射的规则。如果不存在其他规则的话,可以选择默认的映射规则或者建立一个新的映射规则。当创建一个新的映射规则时,为它输入一个名字并且给这个规则分配一个1~65535的优先级,列表中的优先级较高(低数值的规则)的规则被优先使用。输入优先级后,选择这个规则被匹配后所应用的连接配置文件,从一个下拉列表中可以选择潜在的连接配置文件。
现在你可以添加规则并在规则中指定证书的哪些标准被用于我们的匹配规则。在Matching Rule Criterion窗口中,你可以选择证书中的字段,如下所示。
CN:通用名字。
O:公司。
OU:部门。
EA:邮件地址。
SN:姓。
当选择你想匹配的证书字段后,选择一个操作符。包括下面这些操作符:
Equals(等于);
Contains(含有);
Does Not Contain(不包含);
Does Not Equal(不等于)。
现在输入一个数值,你配置的规则将在一个特定的字段中查找这个数值,单击OK。
被完成的规则将会有一个类似于下面的格式:
OU - Equals–Sales (OU等于Sales)
你可以在匹配规则内根据需要尽可能多地定义规则。不过,只有所有的规则都被匹配成功时(或者在Does Not操作符下,都不匹配才行),才能应用所选择的连接配置文件。
你也可以使用CLI来完成这个任务。只需在全局配置模式下输入下面的命令来进入证书映射配置模式(如果你正在配置一个现有的映射,你可以使用序列号来指定优先级或者所配置的映射的顺序,较低的数值优先被使用)。如果你想编辑系统默认的证书映射,当输入这个命令时,你可以让名字字段为空: