You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Active Directory中存储证书以实现Unipass证书认证?

关于在Active Directory中存储数字证书用于Unipass认证的方案

先给你吃个定心丸:Active Directory原生就支持存储用户数字证书,完全不需要额外自定义属性,刚好能匹配你的需求,下面给你详细拆解实现思路:

一、AD原生的证书存储属性

AD的用户对象(user类)内置了专门的证书存储属性,最适合你这个登录认证场景的是:

  • userCertificate:这是一个多值属性,支持存储多个X.509证书的二进制数据,是AD里存储用户身份验证类证书的标准属性,完全符合你的需求。
  • 另外还有userSMIMECertificate这类针对特定场景(比如S/MIME加密邮件)的属性,但userCertificate是通用身份验证证书的首选。

这些属性是AD架构原生自带的,不需要你去扩展schema,直接就能用。

二、存储Base64格式证书的具体操作

你拿到的是Base64编码的证书数据,只需要先解码成二进制字节流,再写入AD用户的userCertificate属性就行。给你举个PowerShell的实操例子:

# 假设$base64Cert是你从Unipass获取的Base64证书字符串
$certBinary = [Convert]::FromBase64String($base64Cert)
# 将二进制证书数据添加到指定用户的userCertificate属性(如果要替换就把-Add改成-Replace)
Set-ADUser -Identity "你的用户名" -Add @{userCertificate = $certBinary}

三、结合Unipass证书认证的后续流程

证书存到AD之后,你的站点要实现证书登录,大致流程是这样的:

  1. 用户通过Unipass出示证书,你的站点先做基础验证——比如检查证书签名是否合法、是否在有效期内。
  2. 从证书里提取唯一标识(比如证书指纹Thumbprint、Subject主题字段),去AD里查询拥有该证书的用户(通过userCertificate属性匹配)。
  3. 匹配成功后,就可以完成用户身份认证,建立站点会话了。

另外,你也可以配置AD的客户端证书映射功能,让AD直接把证书和用户绑定,这样站点端的逻辑能简化不少。

四、什么时候需要考虑自定义属性?

只有当你需要存储证书的额外元数据(比如证书的申请时间、Unipass相关的自定义标识),而原生属性满足不了时,才需要扩展AD schema添加自定义属性。但对于单纯存储证书用于登录认证的场景,原生的userCertificate完全够用,没必要多此一举。

内容的提问来源于stack exchange,提问作者PaRsH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:00:01