4

是否可以有一个 WCF Rest Webservice,它不包括 SSL 客户端证书,并且 IIS SSL 设置设置为“需要 SSL”,并且只“接受”客户端证书而不是“需要”它们?

我有以下配置:

<system.serviceModel>
<services>
  <service behaviorConfiguration="RestServiceBehaviour" name="PM.WCF.Service.PmRestService">
    <endpoint address="" behaviorConfiguration="web" binding="webHttpBinding"
      bindingConfiguration="StreamedRequestWebBinding" contract="PM.WCF.Service.IPmRestService"  />
  </service>
</services>

<bindings>
  <webHttpBinding>
    <binding name="StreamedRequestWebBinding"
             bypassProxyOnLocal="true"
             useDefaultWebProxy="false"
             hostNameComparisonMode="WeakWildcard"
             sendTimeout="10:15:00"
             openTimeout="10:15:00"
             receiveTimeout="10:15:00"
             maxReceivedMessageSize="2147483647"
             maxBufferSize="2147483647"
             maxBufferPoolSize="2147483647"
             transferMode="StreamedRequest">

      <readerQuotas maxArrayLength="2147483647" maxStringContentLength="2147483647" />
      <security mode="Transport">
        <transport clientCredentialType="Certificate"/>
      </security>
    </binding>
  </webHttpBinding>
</bindings>

<behaviors>
  <endpointBehaviors>
    <behavior name="web">
      <webHttp />
    </behavior>
  </endpointBehaviors>
  <serviceBehaviors>
    <behavior name="RestServiceBehaviour">
      <serviceMetadata httpsGetEnabled="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>

<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />

我的问题是以下行:

<transport clientCredentialType="Certificate"/>

如果我使用此设置并将 IIS 配置为接受但不需要客户端证书,则会收到以下错误:

服务“SslRequireCert”的 SSL 设置与 IIS“SslNegotiateCert”的设置不匹配。

可悲的设置

<transport clientCredentialType="None"/>

也不行。我很确定浏览器/客户端确实发送了它的证书,OperationContext.Current.ServiceSecurityContext.PrimaryIdentity.IsAuthenticated但是False.

那么有没有其他方法来拥有两个 IIS 网站,一个配置为需要 SSL 和客户端证书,一个不需要?

即使没有办法绕过它。如何在 Visual Studio 中调试它?因为当我需要 SSL 客户端证书时,我不能只启动 web 服务。http://localhost/Foo.WCF.Service/debugattach.aspx由于缺少客户端证书,Visual Studio 尝试访问并失败。

4

0 回答 0