我已经configurationADCS来通过GPO安装用户和计算机证书。 有了这些证书,我可以从机器到Clearpass RADIUS服务器进行EAP-TLSauthentication。 这是一件好事。
但我试图让用户从http:/// certsrv下载非域名计算机的用户证书。 他们可以下载证书,但不会将其放在客户机上的“个人”证书存储区中,而是放在“Active Directory用户对象”存储区中。 EAP-TLS身份validation失败。 经过进一步的检查,似乎证书没有下载私钥。 通过GPO安装的证书具有私钥。 没有计算机上的私钥,EAP-TLS将始终失败。
如何让ADCS允许通过Web界面下载私钥? “用户”证书模板已经勾选以允许这样做。 我甚至创build了一个新的证书模板,并确保允许私钥下载的选项被启用。
想法?
谢谢!
但我试图让用户从http:/// certsrv下载非域名计算机的用户证书。
使用ADCS Web Enrollment和非域join的机器,您需要手动创build证书请求,或者使用certreq.exe(包含在Windows中)或OpenSSL。
当您使用certreq.exe创build证书请求时,将在客户端计算机上创build私钥,并将其存储在客户端计算机上。 CA从来没有你的私钥。 (企业CA密钥存档超出此范围。)CA只签署您的证书请求。 然后,当您将签名的证书请求返回给您的客户端并导入时,它会在此时“结婚”到私钥。
这全是手动的。 自动化是Active Directory域pipe理的客户端和企业PKI的好处。 但是你指定了非域join。
(PS,我想你可以编写一个脚本来自动执行所需的certreq和certutil命令,但是我没有这个脚本,也许是这样的。
编辑:最后一点,你可能想尝试在CA上configuration密钥存档,然后在你的证书请求中设置RequestType = CMC和PrivateKeyArchive = True,我真的不知道这是否会从一个非域join的机器,但在理论上它可以,因为您可以使用CA的证书安全地将您的私钥从客户端传输到CA. (虽然你可能会争辩说,将私钥存储在多个位置原则上是不安全的。)
但是我从来没有testing过,也找不到logging。
(不是说你需要密钥存档才能实现上面描述的基本的certreq过程;我已经完成了这个部分一百次,而且我知道这是有效的。)