开发人员如何与 Microsoft 证书 *Web 服务* 交互

信息安全 视窗 公钥基础设施 证书颁发机构 网络服务 xml
2021-09-05 08:07:45

Microsoft 证书 Web 服务是一种 HTTPS Web 服务 (WS-Trust),它不依赖 Kerberos,可在各种设备上使用。这是 Windows 2008 中的新功能,与自 Windows 2000 以来产品中存在的基于浏览器的密钥请求系统是分开的。

该服务基于 WCF,并以以下 URL 格式访问: https://server/server_CES_UsernamePassword/service.svc?wsdl

问题

  • Microsoft 内部工具如何与此服务交互?调用了哪些方法?SOAP 是什么样的?

  • 开发人员如何以有意义的方式与此服务交互?我试图直接在 VS2010 中查看该对象,但我没有找到任何启​​用任何建设性操作的代理对象。

我的想法是,如果我无法在 VS2012 中访问该对象,我将无法使用任何其他语言或让 Mac 或 Linux 也无法使用证书进行注册。

这是一个显示的示例 XML 文件(并由 svcutil 使用)。

<?xml version="1.0" encoding="UTF-8"?>
-<wsdl:definitions name="SecurityTokenService" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:tns="http://tempuri.org/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://tempuri.org/" xmlns:i0="http://schemas.microsoft.com/windows/pki/2009/01/enrollment">-<wsp:Policy wsu:Id="WSHttpBinding_ISecurityTokenService_policy">-<wsp:ExactlyOne>-<wsp:All>-<sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">-<wsp:Policy>-<sp:TransportToken>-<wsp:Policy><sp:HttpsToken RequireClientCertificate="false"/></wsp:Policy></sp:TransportToken>-<sp:AlgorithmSuite>-<wsp:Policy><sp:Basic256/></wsp:Policy></sp:AlgorithmSuite>-<sp:Layout>-<wsp:Policy><sp:Strict/></wsp:Policy></sp:Layout><sp:IncludeTimestamp/></wsp:Policy></sp:TransportBinding>-<sp:SignedSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">-<wsp:Policy>-<sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">-<wsp:Policy><sp:WssUsernameToken10/></wsp:Policy></sp:UsernameToken></wsp:Policy></sp:SignedSupportingTokens>-<sp:Wss11 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"><wsp:Policy/></sp:Wss11>-<sp:Trust10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">-<wsp:Policy><sp:MustSupportIssuedTokens/><sp:RequireClientEntropy/><sp:RequireServerEntropy/></wsp:Policy></sp:Trust10><wsaw:UsingAddressing/></wsp:All></wsp:ExactlyOne></wsp:Policy><wsdl:import location="https://smimepol01aa.ad.freesmime.com/FreeSMIME Policy 01aa_CES_UsernamePassword/service.svc?wsdl=wsdl0" namespace="http://schemas.microsoft.com/windows/pki/2009/01/enrollment"/><wsdl:types/>-<wsdl:binding name="WSHttpBinding_ISecurityTokenService" type="i0:ISecurityTokenService"><wsp:PolicyReference URI="#WSHttpBinding_ISecurityTokenService_policy"/><soap12:binding transport="http://schemas.xmlsoap.org/soap/http"/></wsdl:binding>-<wsdl:service name="SecurityTokenService">-<wsdl:port name="WSHttpBinding_ISecurityTokenService" binding="tns:WSHttpBinding_ISecurityTokenService"><soap12:address location="https://smimepol01aa.ad.freesmime.com/FreeSMIME%20Policy%2001aa_CES_UsernamePassword/service.svc/CES"/>-<wsa10:EndpointReference><wsa10:Address>https://smimepol01aa.ad.freesmime.com/FreeSMIME%20Policy%2001aa_CES_UsernamePassword/service.svc/CES</wsa10:Address></wsa10:EndpointReference></wsdl:port></wsdl:service></wsdl:definitions>
1个回答

不知道 Microsoft 内部工具如何与服务交互。你得问他们,他们不会告诉你的。曾经在MSIT工作的朋友说工具,连他都不告诉我。

但是,在此处安装的 Windows SDK 中应该有一个示例(来源:http: //blogs.msdn.com/b/alejacma/archive/2010/10/08/how-to-access-the-new-证书-注册-web-services-programmatically.aspx):

C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\security\x509 certificate enrollment\CSharp\enrollWithIX509EnrollmentHelper

根据各种来源,它不是最深入的样本,所以也可以在这里查看:http: //blogs.msdn.com/b/alejacma/archive/2011/11/07/how-to-request-a-certificate-programmatically -使用-证书-注册-web-services-c.aspx