一个证书就是一组小容量的数据,这些数据包含了它自身的几条信息。这个数据可以包含自身的Email地址,名字,证书使用类型,有效期,AIA和CDP位置的URL。证书还可以包含秘钥对,秘钥对中的私钥和公钥被用来进行身份验证,数字签名和加密。当证书在以下条件中使用时会生成秘钥对:
- 当内容被公钥加密了,它只能通过私钥来解密
- 当内容被私钥加密了,它只能通过公钥来解密
- 一个单独的秘钥对中,找不到其他同一关系秘钥
- 在合理的时间内,无法通过公钥推导出私钥,反之亦然
在注册的过程中,秘钥对会在客户端上生成,然后公钥会随着证书签名申请一起被发送到CA,接着CA会对证书签名申请进行验证,并用CA的私钥对随证书一起发送过来的公钥进行签名,最后将签名后的公钥发回给申请者。这个过程保证了私钥无法脱离系统(或者智慧卡),并且因为该证书的公钥是经过了CA签名的,所以该证书是受CA信任的证书。证书为公钥和实体自身所对应的私钥之间提供了一个获取信任的机制。
我们可以把证书想象成一个驾照,很多公司都认可驾照作为一种身份认证,因为驾照的颁发者是可以信赖的。公司明白某个人想要取得驾照所需要经历的过程,所以他们信任驾照颁发者对已颁发对象进行的个人的身份认证,因此驾照作为一种有效的身份认证也被他们认可,证书信任也建立在这种类似的方式上。
证书模板
证书模板允许管理员定制证书的分发方式,定义证书目的,通过证书许可授权使用类型。管理员可以创建模板,然后通过内建的GUI或命令管理工具将模板快速的部署到企业中。
每个模板相关的DACL(动态访问控制列表),定义了哪个安全性主体有读取和配置模板的权限,哪个安全性实体能够基于模板注册证书或自动注册证书。证书模板和他们的权限被定义在AD域中,并可在林中生效。如果AD林中有多台企业CA,权限的修改会影响到所有的CA服务器。
当你定义了一个证书模板,证书模板的定义必须可用于林中的所有CA。这个要求可以用个将证书模板信息保存在AD域的配置分区中来实现,这些信息的复制与AD域的复制计划一起执行,在复制完成前证书模板可能不会在所有CA上生效。证书的存储和复制都是自动进行的,不需要手动的进行干涉。
注意:在Windows2008R2之前,只有企业版的服务器系统才支持证书模板的管理,在Windows2008R2之后,在标准版中也可以管理证书模板了。
Windows2012的CA支持四个版本的证书模板,证书模板1,2,3这三个版本是之前的服务器系统中使用的,Windows2012中包含了新的第4版证书模板。证书模板的版本与服务器系统版本是对应的,2000,2003,2008,2012分别对应版本1,版本2,版本3,版本4.
证书模板除了与服务器系统版本对应之外,功能上也有一些不同之处:
- Windows2000高级服务器系统支持版本1的证书模板。版本1的证书模板仅能执行的修改是,允许或者不允许证书模板注册的权限,当你安装了一台企业CA,版本1的证书模板会默认被创建。2010年7月13号起微软已经不再支持Windows2000服务器操作系统了。
- Windows2003企业版服务器系统支持版本1和版本2的证书模板。在版本2的证书模板中我们已经能够自己去定义几个设置了,默认的安装后会自带几个默认的版本2模板。你可以根据企业中的需求新增版本2模板,或者你可以复制版本1模板去创建一个新的版本2模板,然后对新建的版本2模板进行修改和权限设置,当新模板被加入到Windows2003企业CA后,它们默认使用的是版本2.
- Windows2008企业版服务器系统支持版本3证书模板,它也支持版本1和版本2的证书模板。Windows2008企业CA的版本3证书模板能够支持几个功能,例如CNG。CNG支持Suite B加密算法,例如椭圆曲线密码。在Windows2008企业版中,你可以复制默认的版本1和版本2的模板,将他们升级到版本3的模板。
- Windows2008默认会提供2个新的证书模板:Kerberos验证和OCSP响应签名。Windows2008R2系统同样能够支持这些证书模板,当你使用版本3的证书模板,你可以为证书请求,证书颁发使用CNG加密和哈希算法。
- Windows2012支持从1到4所有版本的证书模板。这些证书模板仅对Windows2012和Win8可用,为了帮助管理员去分隔各操作系统版本支持的功能,在证书模板属性标签中新增了一个兼容性的标签。它在证书模板属性中标识选项为不可用,这取决于证书客户端和CA所选的操作系统版本。版本4证书模板同样支持CSP和秘钥存储提供器,你可以配置他们使用相同的秘钥去请求续签。
证书模板的升级只能是在CA升级的环境下进行的,例如从Windows2008R2升级到Windows2012的CA,在CA升级完成后,打开CA管理器控制台然后在升级提示中点击"是"对证书模板进行升级。
配置证书模板权限
要配置证书模板权限,你需要在每个证书模板的安全性标签上定义DACL。证书模板被指派的权限可以定义用户或群组对此证书模板执行读,修改,注册或自动注册动作。
我们可以为证书模板指派以下权限:
- 完全控制。完全控制权限运行一个安全性主体去***模板的所有属性,包括证书模板自身的权限以及证书模板的安全性解说符。
- 读取。读取允许用户或计算机在注册证书时查看证书模板,证书服务器也需要有读取的权限,以便在AD域中查找证书模板。
- 写入。写入允许用户或计算机***模板的属性,包括模板自身被指派的权限。
- 注册。注册允许用户或计算机基于该证书模板去注册证书,但是要注册证书你必须还要有该证书模板的读取权限。
- 自动注册。自动注册允许用户或计算机通过自动注册来接收证书,自动注册权限要求用户或计算机还必须拥有该证书模板的读取和注册权限。
证书模板的最佳赋权方式是将权限仅赋给全局或通用组,因为证书模板对象是保存在AD域的配置命名上下文中的,你应该尽量避免将权限赋给单独的用户或计算机。
另外我们最好给Authenicated Users群组开放证书模板的读取权限,这样AD域中的用户和计算机就能够查看到证书模板了,它同时还能在指派证书时允许以计算机账号的系统上下文上运行的CA查看证书模板,但是不要给这个群组赋予注册权限,这样配置就不会有安全上的问题。
配置证书模板的设置项
除了给证书模板配置安全性设置外,你还可以为每个证书模板配置几个其他的设置。但是要注意,可配置选项的数目取决于证书模板的版本,比如版本1的证书模板是不允许修改除安全性以外的设置的,然而更高版本的证书模板则可以配置更多的可用选项。
Windows2012会自带几个默认的证书模板,主要是为了这些目的:代码签名(用于数字签名软件),EFS(用于加密数据),使用户能够用智慧卡注册。如果想在企业中自定一个模板,你需要复制模板,然后***配置。例如你可以配置以下的设置:
- 根据证书的用途配置证书的格式和内容。注意:基于被要求使用PKI的安全性部署的类型,证书的用途可能与用户或计算机相关
- 配置创建和提交一个有效证书申请的过程
- CSP 支持
- 秘钥长度
- 有效期
- 注册过程或注册申请
同样你也可以在证书设置中定义一个证书用途。证书模板能够有以下2种类型的用途:
- 单用途。单用途证书使用于单一的目的,例如允许用户使用智慧卡注册。企业使用单用途证书,是为了解决当被部署的证书中的配置与其他的证书不相同的情况。例如,如果所有的用户都收到了一个证书用于智慧卡登入,但是有部分群组收到一个证书用于EFS,企业通常会将这些证书和模板分隔开,以确保用户只会收到需要的证书。
- 多用途。一个多用途的证书可同时用于多个目的,这些目的通常是不相关的。有些模板默认就是多用途的,比如用户模板,企业经常会根据某些新目的去修改模板,例如,如果企业打算颁发3种用途的证书,就可以将这些用途组合到一个证书模板中,这样就能够简化管理和维护的工作。
证书模板更新的选择
大多数企业的CA架构每个工作功能有一个证书模板,例如一个证书模板用于文件加密,另一个用于代码签名。此外还可能有一些模板可以为大多数一般的群组对象涵盖多个功能。
作为IT管理员,我们可能会去修改一个已存在的证书模板,因为这个证书模板可能设置不正确,或者在最初颁发的时候有一些问题。有时我们还可能需要将多个现存的模板合并到一个单独的模板中。
我们可以通过修改或替代现有的模板来对证书模板进行更新:
- 修改初始证书模板。在修改版本2,版本3,版本4的证书模板时,我们需要对此模板做出修改并应用到模板,处理完成之后,CA所有基于此模板颁发的证书都会包含你所修改的配置。
- 替代现有证书模板。企业的CA架构中可能会有多个证书模板去提供相同或类似的功能性。在这种情况下,我们可以用一个单独的证书模板替代或替换多个证书模板。我们只需要在证书模板控制台指定使用新的证书模板去替换现存的证书模板,替换模板的另一个好处就是当证书过期时会使用新的证书。