c# - 使用 ICertRequest 从 Microsoft 证书服务请求 X509 证书
问题描述
我的应用程序最近更改为使用客户端-服务器模型。
现在我需要能够从远程服务器而不是本地网络上的服务器请求证书。ICertRequest 指定它可以接受:
注册服务器的 HTTPS URL 或 ComputerName/CAName 的形式
后者之前使用没有任何问题,但现在我希望它使用 HTTPS 但不确定用作 url 的内容。我能够通过以下方式访问网页:
但是,如果我将此字符串用作 ICertRequest 的strConfig,它会出现:
System.Runtime.InteropServices.COMException: 'CCertRequest::Submit: The input data was not in the expected format or did not have the expected value. 0x803d0000 (-2143485952)'
请求没有以任何方式改变,所以我希望它与 URL 相关。我也试过https://example.com/certsrv/certrqus.asp没有任何运气
解决方案
Microsoft ADCS 中有两个 Web 功能:
- 旧版注册网页(您正在尝试使用)。
- 注册使用 HTTP/SOAP 传输的 Web 服务。
注册服务器的 HTTPS URL
该消息指的是后一个URI。您可能需要在服务器端(CA 所在的位置)设置注册 Web 服务,并使用公开的端点与 CA 进行通信。Web 服务由两个服务组成:策略和注册。
政策沟通:
client <---HTTP/SOAP---> XCEP <---RPC/DCOM---> Policy Storage
客户端首先与 XCEP 通信以加载注册策略和证书注册策略端点。与 CA 没有直接通信,XCEP 仅存储策略、客户端可用的证书模板和注册 Web 服务的 URI。
client <---HTTP/SOAP---> WSTEP <---RPC/DCOM---> MS ADCS
策略(在第一步中获得)包含向策略提供者(XCEP 服务器)注册的注册服务的 URI。客户端使用一个或多个端点来执行证书注册任务。
推荐阅读
- python - 在 Google Colab 中将导入的 csv 文件作为 pandas DataFrame 的错误消息
- python - 我的数学符号识别程序不能很好地预测手写数据
- typescript - 获取嵌套值作为类型
- mysql - 从数据库中选择数据并在分组后获得正确的顺序
- python - Python Flask 函数返回网页以在 Mongodb 中请求和更新密码
- python - 在多标签分类中将参数传递给较低级别的 XGBoost 估计器
- java - 如何摆脱 JSON 序列化中的 ' 字符?
- asp.net - Bamboo CI 构建的 Visual Studio 解决方案,具有构建顺序依赖项
- c# - C#流利验证
- java - 排序图
按日期(值)使用流 Java