CA认证的流程和原理ADCS(活动目录证书服务)是微软的公钥基础结构(PKI)的实现。PKI处理颁发并管理用于加密和身份验证的的数字证书的组件及过程。ADCS颁发的数字证书可以用于加密文件系统、电子邮件加密、安全套接字层SSL和身份验证。安装了ADCS的服务器成为证书颁发机构CA。1.数字证书数字证书是一种电子凭据用于验证个人,组织和计算机。证书颁发机构颁发和认证证书。数字证书提供了一种方法来验证证书持有者的身份。证书使用加密技术来解决两个实体之间的问题。数字证书都用于非对称加密,它需要两个密钥,第一个密钥是私钥,它由被颁发了数字证书的用户或计算机安全地存储,第二个密钥是分发到其它用户和计算机的公钥。由一个密钥加密的数据只能由另一个密钥解密。这种关系确保对加密数据的保护。一张证书包含下面的数据:1.公用密钥证书主题的公钥和私钥对。这样可以使用证书来验证拥有私钥的个人或计算机的标识。例如,一台web服务器的数字证书包括web服务器的主机名和IP地址2.有关申请证书的使用者的信息3.有关CA颁发证书的详细信息,包括证书有效性的信息,包括如何使用证书以及它的有效期。例如,可能限制一个证书只用于加密文件系统,证书只在特定时间期有效,通常是两年或更短,证书过期之后就不能再使用它了。EnhancedKeyUsage是证书的一个可选的扩展属性,这个属性包含一个目标标识符(OID),用于应用程序或者服务。每个OID是一个独特的数字序列。KeyUsage:证书允许主体执行特定任务。为了帮助控制证书在其预定的目的以外的使用,限制自动放置在证书。密钥用法(KeyUsage)就是一个限制方法来决定一个证书可以被用来干什么。它允许管理员颁发证书,它只能用于特定任务或用于更广泛的功能。如果没有指定密钥用法,证书可以用于任何目的。对于签名,keyusage可以有下列一个或者多个用途:1.数字签名2.签名一种起源的证据3.证书签名4.CRL签名2.CA证书颁发机构CA是向用户和计算机颁发数字证书的PKI组件,当组织实现数字证书时,他们必须考虑是使用ADCS还是一个外部CA来实现。内部CA的主要优点是成本,对于颁发的每个证书都没有额外成本。而如果使用外部CA(三方CA),每个颁发的证书都有一定费用。CA的主要作用如下:1.验证证书请求者的身份:当一张证书颁发给一个用户、计算机或者服务的时候,CA会验证请求者身份来确保证书只办法给正确的用户或机器2.将证书办法给用户和计算机3.管理证书吊销情况:CA会定期发布CRL,CRL包含证书的序列号以及被吊销的情况。3.请求和颁发证书的过程用户、计算机和服务请求和接收来自CA的证书。请求和接收证书的过程被称为注册。通常,用户或计算机启动注册通过提供独特的信息,如电子邮件地址或通用名称,和一个新生成的公钥。在产生证书之前CA使用此信息来验证用户的身份。1.生成密钥对。申请人生成一个公钥和私钥对,或被组织的权威指定一个密钥对。申请人将密钥对存放在本地存储的磁盘上或如智能卡的硬件设备2.申请人提供请求的证书模板所需的证书信息请求,并将它发送到CA。证书请求包括公共和私人密钥对的公钥生成请求的计算机3.证书管理器检查证书请求验证信息。基于这些信息,证书管理器颁发证书或拒绝证书请求4.CA创建并颁发证书给请求者。由CA签名证书,以防止修改,包括请求者的身份信息和提交的公共密钥作为颁发的证书的属性。4.证书链链建立是建立信任链的过程或者证书路径,从最终证书以及安全实体信任的根证书。证书链的建立将会通过检查从最终证书到根CA的每个证书路径。会从中级证书颁发机构存储区,受信任的根证书颁发机构存储区,或从一个证书的AIA属性中指定的URL中检索证书。如果加密应用程序接口发现一个路径中的证书有问题,或者如果它找不到证书,证书路径是会作为一个不受信任的证书路径丢弃。证书链引擎生成所有可能的证书链。然后整个的证书链就生成了并按照链的质量排序。对于给定的最终的质量最好的证书链作为默认的链返回给调用应用程序。每个链都是通过结合证书存储的证书和发布的URL位置的证书。链中的每个证书分配一个状态代码。状态代码指示证书是否符合下面的条件:1.签名是否有效2.时间是否合法3.证书是否过期4.证书是否已经被吊销5.时间嵌套6.证书上的其他限制每个状态代码都有一个分配给它的优先级。例如,过期的证书具有更高的优先级比吊销的证书。这是因为过期的证书不检查吊销状态。证书链中的所有证书都会被检查是否吊销。不管是什么过程来检查证书的合法性,只要证书链中的状态检查失败,这个证书链就会被拒绝。对链中的每个证书,证书链引擎必须选择一个颁发CA的证书。这一过程被称为验证路径,重复验证直到达到一个自签名证书(通常,这是根CA证书)。加密应用程序接口对待根证书作为绝对信任的信任。5.CertificateService组件的工作原理CA服务包括如下组件以及功能,请参考:ClientModule:负责提交证书申请CertificateServicesEngine:负责处理证书申请请求,负责创建和颁发证书给有效的申请者Policymodule:负责验证请求者是否有权获得证书CryptoAPIandcryptographicserviceproviders:负责创建私钥并分发给申请者的受保护的证书存储exitmodule:负责分发证书给有效的客户端,在网页、公共文件夹、AD中发布证书,负责向AD中定期发布CRLsCryptoAPI:负责管理所有加密操作的私钥certificatesdatabase:负责存储所有的证书交易以及审计CA服务所使用的协议有DCOM和LDAPDCOM:用来进行证书注册LDAP:用来进行域AD之间的交互证书创建的过程如下:ThisprocessappliestomostcommonPKCS#10requestsorCertificateManagementprotocolusingCMSrequests.1.Whenauserinitiatesacertificaterequest,EnrollmentControl(Xenroll.dll)usesacryptographicserviceprovider(CSP)ontheclient’scomputertogenerateapublickeyandprivatekeypairfortheuser.当用户初始化证书请求的时候,CSP会创建出一个公钥和私钥对。2.Afterakeypairhasbeengenerated,Xenrollbuildsacertificaterequestbasedonacertificatetemplate.密钥对创建之后,会基于模板创建出一个证书请求3.Theuser’spublickeyissentwiththeuser’sidentifyinginformationtotheCertificateServicesengine.用户的公钥以及身份信息会被发送给证书服务引擎4.Meanwhile,acopyoftherequestisplacedintherequestfolderfortherequester.Inthecaseofauser,thisfolderis:同时,在本地保存一份请求C:\DocumentsandSettings\username\ApplicationData\Microsoft\SystemCertificates\Request\5.TheCAauthenticatestheuser.CA需要对用户进行验证6.TheCertificateServicesenginepassestherequesttothepolicymodule,whichmightperformanadditionalaccesscheckbyqueryingActiveDirectoryoranotherreliablesourcesuchasIIS.证书服务引擎将请求发送给policymodule,policymodule负责到AD中请求进行检查。7.ThepolicymodulealsocheckstheregistryforalistofcertificatetemplatesfortheCA.Thepolicymodulechecksthelistforversionnumberstoverifythatithasthemostrecentversionsofallcertificatetemplates.Iftherequestreferencesamorerecentversionofthecertificatetemplatethaniscurrentlyavailable,therequestfails.Policymodule负责检查证书模板中的注册表信息。8.Iftheaccesscheckissuccessful,theCertificateServicesenginecreatesanewrowintheRequestandCertificatestableofthecertificatesdatabase.ArequestIDisenteredintothedatabasetohelptracktherequest.访问检查成功之后,请求号被存储在数据库中9.Additionalattributesofthecertificaterequest,suchastheextensionsassociatedwiththerequest,areenteredintotheappropriatefieldsinthedatabase.证书的其它相关属性被写入CA的数据库中10.TheCertificateServicesenginevalidatesthedigitalsignatureusedtosignthecertificaterequest.ThisvalidationprocessinvolvescomparingallthecertificatesinthechainleadinguptotherootCAtoareliablesource,suchasActiveDirectoryorIIS.Thisvalidationprocessalsoinvolvesconfirmingthatnoneofthecertificatesinthechainhasbeenrevoked.验证数字证书,检查证书链11.Thepolicymoduleappliesacertificatetemplatetofilloutthedataassociatedwiththerequest.Thisprocessaddsinformationsuchasusagerestrictionsandvalidityperiods,aswellassubjectnameformat,tothedataintheoriginalrequest.Someofthisdataisfixedandthereforecopieddirectlyfromthetemplate,somecomesfromthecertificaterequest,andsomeisconstructedonaperuserbasis(concatenatingthefriendlynameoftheuserintocommonnameformat,forexample).NoteoWhenacertificateisbeingrenewed,datathatisnotbeingmodifiedissimplyreused.12.Ifacertificatetemplatehasbeensettopending,anadministratormustverifyrelatedinformationintherequest—suchastheidentityoftherequester—w