当你决定在企业中部署PKI的时候,首先需要确认的是你打算如何设计你的CA结构,CA的结构决定了你的内部PKI的核心设计,以及结构中每个CA的用途。每个CA结构通常会有两个或更多的CA,一般情况下,第二台CA和所有的从属CA的部署都是因为某些特殊用途,只有根CA是被强制要求安装的。
注意:CA结构的部署并不强制要求使用PKI和证书,对于较小的和比较简单的环境,你可以在CA结构中只部署一台CA,一般这台CA作为企业根CA。
如果你决定部署一个CA结构,并且你已经有了一台根CA,那你就必须决定给第二和第三层的CA赋予什么样的角色,一般我们不推荐建立超过三层的CA结构,除非公司是一个复杂的分布式的环境。
最常见的CA结构是两层结构,根CA位于顶层,从属CA位于第二层,通常我们会让根CA处于离线状态,然后通过从属CA为所有的客户端颁发和管理证书,但是在某些复杂的场景,你还需要部署其他类型的CA结构。CA结构通常会属于下面几种类型中的某一种:
带策略CA的CA结构。策略CA是一种从属CA类型,它在CA结构中直接位于根CA下面。策略CA会将证书颁发给直接位于它下方的从属CA,企业中部署策略CA去描述策略和程序,以此来保障PKI的安全,它可以验证证书持有者的身份并强制性的管理证书。策略证书只会将证书颁发给其他CA,接收到证书的CA必须接受并强制执行策略CA所定义的策略。不过策略CA并不强制使用,除非企业有多个不同的部门,行业,或者企业各地分支机构要求有不同的颁发策略和进程。但是如果你的企业要求不同的颁发策略和进程,你就必须在CA结构中加入策略CA用于定义每个唯一的策略。比如,公司可以部署一台策略CA来为内部用户颁发所有的证书,然后部署另一台策略CA为非内部用户颁发所有的证书。
带Cross-certification信任的CA结构。在这种情况下,当一个CA结构中的一台CA颁发一个cross-certified CA证书到另一个CA结构中的一台CA,这两个独立的CA结构会进行交互操作。执行这个动作时,两个不同的CA结构之间就建立了一个双向信任关系。
双层CA结构。在双层结构中,至少有一台根CA和一台从属CA,此时从属CA负责策略和颁发证书给证书请求方。
独立CA与企业CA
在Windows2012中,你可以部署两种类型的CA:独立CA和企业CA。这两者最大的不同之处在于活动目录的集成和依赖。独立CA不需要AD域,也不需要依赖于AD域,而企业CA需要有AD域,但是企业CA有很多优势,比如可以进行自动注册。
通过下表中的对比,我们可以看到独立CA与企业CA之间最重要的不同之处。
特性 | 独立CA | 企业CA |
代表的使用方法 |
独立CA通常用作离线CA,但是它能够作为CA,与网络上的CA一致可用。 | 企业CA通常被用来颁发证书给用户,计算机,服务。并且一般不会作为离线CA使用。 |
活动目录依赖 | 独立CA不依赖AD域,并且可以在非域环境中部署 | 企业CA要求有AD域,它将AD作为配置信息和注册信息的数据库。企业CA作为证书的发布点来颁发证书给用户和计算机 |
证书申请方法 | 用户只能手动或者通过Web从独立CA申请证书 |
用户能够通过以下方式从企业CA申请证书: 1.手动注册 2.Web注册 3.自动注册 4.注册代理 |
证书颁发方式 | 证书管理员必须手动批准所有的证书申请 | 根据模板中的自主访问控制列表自动的颁发或拒绝证书申请 |
最常见的是部署结构是将根CA作为独立CA,在它颁发了一个证书给自己和它的从属CA后就设置成离线,这个从属CA通常就部署成企业CA。
部署根CA时的注意事项
在你部署根CA的时候有几个需要关注的地方,首先你要决定是否部署一个离线的根CA,在这个前提下,你还需要决定是部署独立的根CA还是要部署企业根CA。
通常如果我们部署的是单层CA结构,整个CA结构中只有一台CA,那么我们一般会选择将它部署成企业根CA,但是如果我们部署的双层CA结构,一般我们会选择部署一*立根CA和一台企业从属CA。
接下来我们需要考虑的是操作系统的安装方式,AD CS支持完整安装和核心安装的操作系统,核心安装的操作系统拥有攻击面小和减少管理员操作的优势,因此在企业环境中我们可以考虑部署核心安装的操作系统,当然AD CS也能够支持Minimal Server Interface的操作系统安装方式(精简型)。
在Win2012中我们还可以通过Powershell来部署AD CS角色。一定要记住的是,在部署了CA之后不能去变更该CA的计算机名或者计算机的域成员关系,当然我们的域名也是不能更改的,因此在安装CA时确认好以下的属性是很关键的环节:
注意事项 | 描述 |
用于生成新秘钥的的加密服务提供器(CSP cryptograhic service provider) |
默认的CSP作为微软强加密提供器 名称中带有字符#的提供器是下一代加密提供器 |
秘钥长度 | 微软强加密提供器的默认秘钥长度是2048个字符,这是推荐的根CA秘钥最小秘钥长度,但是最佳实践推荐使用4096位秘钥。 |
CA颁发的签名证书所使用的哈希算法 | 默认的哈希算法是安全哈希算法1,如果你公司中没有旧版的操作系统,比如XP,那么你可以选择更新的哈希算法,例如SHA256 |
CA颁发的证书的有效期 | 在证书模板中会给有效期定义一个默认值,你可以为不同的模板设置不同的有效期 |
根CA的状态(在线or离线) | 尽量将根CA配置成离线CA,这样能够增强根证书的安全性,因为它无法通过网络被攻击。 |
如果你决定部署一个离线的独立根CA,有几个特别的地方需要考虑到:
在你从根CA颁发一个从属证书之前,独立根CA将自身作为CDP(吊销发布点)和AIA(授权机构信息访问),因此当你将根CA配置成离线的时候,进行吊销检查会失败,因为此时CDP和AIA已经不可访问,所以在你重新定义CDP和AIA位置的时候,你需要将CRL和AIA信息手动的拷贝到新位置。
设置有效期,比如为根CA发布的CRL设置一年的有效期,这意味着你必须每隔一年从根CA上发布新的CRL,并且将新的CRL拷贝到客户端能够获得该CRL的位置,如果你没有执行这个动作,在根CA的CRL过期后,对所有证书的吊销检查将会失败。
使用组策略将根CA证书发布到所有服务器和客户端的"受信任的根证书颁发机构"中。因为独立CA无法和企业CA一样自动的执行,所以你必须在独立CA的环境中手动的去为服务器和客户端安装证书。你还可以使用certutil命令去将根CA证书发布到AD域中。
部署从属CA的注意事项
你可以使用一个从属CA为PKI部署策略限制,并将证书发布到客户端,当你在公司中安装了一台根CA后,你可以安装一台或多台从属CA。
当你使用从属CA来为域中的用户和计算机发布证书的时候,你可以将从属CA配置成企业CA,这样你就能使用AD域中客户端账号的数据来发布和管理证书,并将证书发布到AD域。但是要完成这个动作,你所使用的账号必须是本地管理员组的成员或相同级别的权限,如果想将从属CA配置成企业CA,你的账号需要时域管理员群组的成员或相同级别的权限,从安全性的角度考虑,推荐使用一台离线根CA结合一台企业从属CA使用。
部署从属CA通常是为了实现以下的部分功能:
使用。你可以为多种用途去颁发证书,例如安全的多用途互联网邮件扩展(S/MIME),EFS,RAS(Remote Access Service).针对这些用途颁发证书的策略可以是不同的,并且能够进行分开的管理这些策略。
组织划分。你可以使用不同的策略来颁发证书,这取决于该部门或机构在组织中所扮演的角色,你可以创建从属CA去隔离和管理这些策略。
地理划分。组织可能会有一些机构分布在不同的物理站点,这些站点之间通信的网络带宽有限,那么我们就需要部署单独的从属CA给这些站点或所有站点。
负载均衡。如果你想通过PKI去发布和管理大量的证书,仅有一台CA的话会使得这台CA的网络负载过大,部署多台从属CA来颁发同类型的证书,可以将网络负载分散到各个CA中。
备份和容错。部署多台CA提升了CA的可用性,保证了你的网络中始终拥有能够正常运行的CA服务器,从而增加了用户申请证书时收到回应的可能性。
使用CAPolicy.inf文件来安装
如果你想部署一个根CA或者从属CA,在安装过程中使用一些预先定义的值,或者想定义一些额外的参数,我们可以通过使用CAPolicy.inf来达到这些目的。CAPolicy.inf文件是一个纯文本文件,它包含了AD CS角色安装或续订CA证书时的多个配置项目。CAPolicy.inf文件并不要求安装AD CS角色,但是如果没有AD CS,就只会应用默认的设置,而在大多数的情况下,仅仅使用默认的设置是不够的,我们可以通过CAPolicy.inf文件去进行更复杂的部署。
每个CAPolicy.inf文件被划分成几个区域,它有一个简单的结构,具体如下描述:
Section是.inf文件的一个区域,包含了一个逻辑的秘钥组,在.inf文件中Section总是用括弧括起来
秘钥作为参数出现在"="号的左边
值作为参数出现在"="号的右边
例如,如果你想在CAPolicy.inf文件中指定一个授权机构信息访问点,你可以使用以下的语法:
[AuthorityInformationAccess]
URL=http://pki.adatum.com/CertData/adatumCA.crt
在上面这个例子中,AuthorityInformationAccess是一个区域,URL是秘钥,http://pki.adatum.com/CertData/adatumCA.crt 是值。
你还可以在CAPolicy.inf文件中指定一些CA服务器设置,例如:
[certsrv_server]
RenewalKeyLength=2048
RenewalValidityPeriod=Years
RenewalValidityPeriodUnits=5
CRLPeriod=Days
CRLPeriodUnits=2
CRLDeltaPeriod=Hours
CRLDeltaPeriodUnits=4
ClockSkewMinutes=True
LoadDefaultTemplates=True
AlternateSignatureAlgorithm=0
ForceUTF8=0
EnableKeyConuting=0
你还可以通过CAPolicy.inf文件在AD CS安装的时候定义以下配置:
证书实施声明。描述CA用来颁发证书的实施设置,其中包含颁发证书的类型,颁发的信息,证书的续签和恢复,以及其他详细的CA配置。
对象标识符(OID Object Identifier).标识出一个特定的对象或者属性
CRL公布间隔。定义基础CRL公布的间隔。
-
CA更新设置。定义以下的更新设置
a.秘钥大小。定义用于根CA续订时的配对秘钥的长度
b.证书有效期。定义根CA证书的有效期
c.CDP和AIA路径。提供这些路径用于根CA安装和续订
一旦你创建了CAPolicy.inf文件,在安装AD CS角色或续订CA证书之前,你必须将它拷贝到服务器的%SystemRoot%文件夹中。
本文出自 “乾涸的海綿” 博客,请务必保留此出处http://thefallenheaven.blog.51cto.com/450907/1611149