注册证书
如图所示,是 Will Schroeder 和 Lee Christensen 发布的 Certified_Pre-Owned 白皮书里面画的证书注册流程:
从图中我们可以看到,证书注册流程如下:
- 客户端生成一对公、私钥。
- 客户端生成证书签名请求(CSR,Certificate Signing Request),里面包含客户端生成的公钥以及请求的证书模板、请求的主体等信息。整个 CSR 用客户端的私钥签名,发送给 CA。
- CA 收到请求后,从中取出公钥对 CSR 进行签名校验。校验通过后判断客户端请求的证书模板是否存在,如果存在,根据证书模板中的属性判断请求的主体 是否有权限申请该证书。如果有权限,则还要根据其他属性来校验,如:发布要求、使用者名称、扩展来生成证书。
- CA 使用其私钥签名生成的证书并发送给客户端。
- 客户端存储该证书在系统中。
注册证书权限
不同模板的证书具有不同的权限,查看证书模板的安全属性,可以看到不同主体对其具有的权限。比如完全控制权限、读取权限、写入权限、注册权限等。
如下是计算机证书模板的属性,可以看到域内所有机器都对其具有注册权限。
如下是用户证书模板的属性,可以看到域内所有用户都对其具有注册权限。
注册证书方式
客户端可以根据ADCS环境的配置选择不同方式注册证书:
- 使用 Windows 客户端证书注册协议(MS-WCCE),这是一组分布式组件对象模型(DCOM)接口,可与 ADCS 进行交互。DCOM 服务器默 认在所有 ADCS 服务器上启用,这也是客户端申请证书的最常用方法。
- 通过 ICertPassage 远程协议(MS-ICPR),一种可以在命名管道或 TCP/IP 上运行的 RPC 协议。
- 访问证书注册 Web 界面。要使用此功能,ADCS 服务器需要安装并 配置 “证书颁发机构 Web 注册” 角色。启用后,用户可以导航到 http:///certsrv/,以访问 AD CS 服务器上通过 IIS 托管的 ASP Web 注册应用程序。
- 与证书注册服务(CES)交互。要使用此功能,服务器需要安装 “证书注册 Web 服务” 角色。启用后,用户可以通过 https:///_CES_Kerberos/service.svc 访问 Web 服务以请求证书。此服务与证书注册策略(CEP)服务(通过证书注册策略 Web 服务角色安装)协 同工作,客户端使用该服务在 URLhttps:///ADPolicyProvider_CEP_Kerberos/service.svc 中列出证书模板。
- 使用网络设备注册服务。要使用它,服务器需要安装 “网络设备注册服务” 角色,它允许客户端(即网络设备)通过简单证书注册协议 (SCEP)获取证书。启用后,管理员可以在 URL http:///CertSrv/mscep_admin/ 中获取一次性密码(OTP)。然后管理员 可以将 OTP 提供给网络设备,该设备将使用 SCEP 通过 URLhttp://NDESSERVER/CertSrv/mscep/ 请求证书。
图形化注册证书
域内机器可以使用 certmgr.msc(管理用户证书)命令或 certlm.msc(管理机器 证书)命令图形化申请证书。
certmgr.msc 命令是用于管理用户证书。
certlm.msc 命令是用于管理机器证书。
web接口注册证书
如果在安装 ADCS 服务的时候,勾选了“证书颁发机构 Web 注册”选项,那么则可以通过 Web 方式来申请证书。
访问问 ADCS 证书服务器的/Certsrv 路径即可看到该注册接口,需要输入有效的账号密码进行认证。这里我们输入域用户 hack 和密码进行登录。
输入了有效的账号密码后,即可看到申请证书等功能,点击申请证书
点击高级证书申请
然后到了提交证书申请页面,这里需要在框中输入证书申请。
这里的证书申请可以执行如下命令来进行证生成
openssl req -new -SHA256 -newkey rsa:4096 -nodes -keyout tmac.com.key -o ut www.tmac.com.csr -subj "/C=CN/ST=Beijing/L=Beijing/O=jishu/OU=sec/CN=www.tmac.com"
或者访问在线页面进行生成:https://myssl.com/csr_create.html
此时只需要将 www.tmac.com.ser 文件的证书申请请求内容复制粘贴即可。
或者在线网页的所生成的 CSR 文件内容复制粘贴即可。
点击提交
可以看到申请的证书已经颁发,点击下载证书即可下载证书文件。
使用命令certsrv.msc打开CA证书颁发机构即可看到颁发的证书
工具申请证书
certipy
#用户请求证书
certipy req -u hack@tmac.com -p admin@123 -dc-ip 192.168.1.11 -target 192.168.1.12 -ca tmac-SERVER12-CA -template User -debug
#机器请求证书
certipy req -u machine\$ -p root -dc-ip 192.168.1.11 -target 192.168.1.12 -ca tmac-SERVER12-CA -template Machine -debug
certify
#在域内机器执行,以当前登录的用户权限申请证书
Certify.exe request /ca:WIN-3EAQBB8A70H.tmac.com\tmac-SERVER12-CA /template:User
#在域内机器执行,以当前登录的用户权限伪造 administrator 用户申请证书
Certify.exe request /ca:WIN-3EAQBB8A70H.tmac.com\tmac-SERVER12-CA /template:ESC1 /altname:tmac\Administrator
查看证书
图形化查看
#查看用户证书
certmgr.msc
#查看机器证书
certlm.msc
查看用户证书
查看机器证书
certutil查看
#查看用户证书
certutil -user -store My
#查看机器证书
certutil -store My
用户证书
机器证书
Seatbelt查看
项目地址:https://github.com/GhostPack/Seatbelt
执行如下命令查看当前机器上的用户证书和机器证书。
Seatbelt.exe Certificates