ADCS证书请求历史留存问题:关闭页面后无法查看请求记录
ADCS Web界面证书请求历史丢失的解决方法
问题根源
ADCS默认Web界面的「查看待处理证书请求状态」页面依赖客户端会话Cookie存储请求跟踪信息,关闭浏览器后会话Cookie失效,导致请求历史无法留存。同时默认配置下,Web界面仅展示当前会话内的请求记录,未关联服务器端的CA数据库请求日志。
解决步骤
1. 启用CA数据库的请求持久化存储
- 打开「证书颁发机构」控制台,右键目标CA服务器 → 属性
- 切换到「数据库」选项卡,确保勾选「将请求存储在数据库中」,并设置合理的请求保留期限(如30天)
- 执行命令重启ADCS服务:
net stop certsvc && net start certsvc
2. 修改CertSrv Web界面的查询逻辑(中文环境)
默认路径:C:\Windows\System32\CertSrv\zh-CN
- 编辑
certrqst.asp:找到会话ID相关的查询代码,将其替换为基于当前登录用户账户的查询(需启用Windows身份验证),或添加手动输入请求ID的查询入口 - 编辑
certstatus.asp:增强页面功能,允许用户通过请求ID、证书序列号检索历史请求记录
3. 配置IIS服务器端会话存储
- 打开IIS管理器,定位到CertSrv站点 → 功能视图 → 会话状态
- 将会话模式从「进程内(InProc)」改为「状态服务器(StateServer)」或「SQL Server」,确保会话数据存储在服务器端
- 设置会话超时时间为24小时以上,避免短期关闭浏览器导致会话失效
4. 替代方案:使用命令行查询请求状态
如果Web界面修改成本高,可直接通过命令行操作:
- 查询指定状态的请求(2=待处理,3=已批准,4=已拒绝):
certutil -view -restrict "RequestStatus:3" - 根据请求ID查询详情:
certutil -getrequest <请求ID> - 导出已签发的证书:
certutil -retrieve <请求ID> 已签发证书.cer
关键注意事项
- 必须为CertSrv站点启用Windows身份验证,禁用匿名访问,这样服务器才能将请求记录关联到用户账户
- 若为非域环境,需让用户记录每次提交的请求ID,用于后续查询
内容的提问来源于stack exchange,提问作者Vyvy
相关产品推荐
相关产品推荐

