.net 自托管WCF服务+客户端证书身份验证

.net 自托管WCF服务+客户端证书身份验证,.net,wcf,web-services,authentication,.net,Wcf,Web Services,Authentication,我正在尝试实现一个自托管WCF服务,它应该使用客户端证书身份验证。不幸的是,身份验证失败。日志文件显示,客户端不提供证书。如果试图通过firefox访问该服务,它会显示:错误403-禁止 以下代码通过app config文件显示配置 <serviceBehaviors> <behavior name="sslbehaviour"> <serviceMetadata httpsGetEnabled="true" /> <

我正在尝试实现一个自托管WCF服务,它应该使用客户端证书身份验证。不幸的是,身份验证失败。日志文件显示,客户端不提供证书。如果试图通过firefox访问该服务,它会显示:错误403-禁止

以下代码通过app config文件显示配置

  <serviceBehaviors>
    <behavior name="sslbehaviour">
      <serviceMetadata httpsGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="true"/>
      <serviceCredentials>
        <clientCertificate>
          <authentication certificateValidationMode="ChainTrust" trustedStoreLocation="CurrentUser"/>
        </clientCertificate>
        <serviceCertificate findValue="cert-thumb-print" x509FindType="FindByThumbprint" storeLocation="CurrentUser" storeName="My"/>
      </serviceCredentials>            
    </behavior>
  </serviceBehaviors>

endpoint address="https://localhost:443/service" binding="wsHttpBinding"
      bindingConfiguration="BindingForResultPost" contract="MobD.IEndpointService" />
错误消息:System.ServiceModel.Channels.HttpsClientCertificateNotPresent.aspx

我想我已经正确地创建和安装了我的证书

我将非常感谢每一个提示

亲切问候,,
Michael

你说当你尝试通过Firefox访问它时,你会得到一个403。Firefox是否安装了客户端证书

Http子代码是什么?我猜您得到的是403.7,这意味着客户端证书未安装,或未通过浏览器显示,403.16客户端证书不受信任,403.17客户端证书已过期,或可能403.13客户端证书已吊销


我看到的一个问题是,在没有传出web访问权限的服务器上,您会遇到上述403个代码中的一个,因为服务器无法获取证书吊销列表,所以无法记住该代码,因此它会拒绝所有证书。可以禁用此检查,但显然有一些安全注意事项需要注意。

请参阅以下步骤,了解在何处安装客户端证书:

您需要具有客户端证书,如下所示:

在客户端计算机上:

当前用户->个人文件夹应安装客户端证书MyClientCert.pfx

在服务器计算机上:

本地计算机->信任人应安装MyClientCert.cer

确保设置正确。我看到您在当前用户的TrustedPeople中拥有客户端证书。希望现在它在证书安装上清晰可见

请参阅此部分,其中解释了正在安装的客户端证书以及如何告诉浏览器从应用商店中选择一个:


注意:当使用.pfx和.cer文件时,当您自托管WCF服务时,必须在Windows中分配端口权限

请参阅MSDN上的这篇文章:


您还可以使用检查端口状态

当我连接到服务时,firefox不应该要求我提供证书吗?如何检索子代码?e、 我刚看到主代码。。。我已经尝试过使用fiddler,但不幸的是输出不是很有帮助。客户端计算机上安装了客户端证书及其根ca。这是Windows机箱吗?Firefox不像IE和Chrome那样使用Windows证书库。它有自己的商店,所以你也需要在那里安装它,或者用IE或Chrome进行测试。假设您使用的是IIS7或更高版本,我认为您必须配置详细的错误代码-出于安全原因,默认情况下它不会启用,因为它提供了太多信息供公众使用。是的,它是Windows。我已经尝试将证书放入firefox的认证存储中。似乎WCF服务不要求证书。我在哪里可以激活详细信息错误代码?这是一个自托管的应用程序-iis的配置是必要的吗?啊-它是自托管的。不确定如何启用详细的错误消息,但您可以尝试设置WCF跟踪,看看这是否为您提供了所需的额外信息。这可能值得在IIS中托管,例如,使用Windows Process Activation Services作为一个实验,看看您是否可以找到问题的症结所在。如果WCF服务是自托管的,我不确定是否要调试它的SSL端。我已经在不同的浏览器中测试了整个过程。IE、FF和Chrome无法请求客户端证书。唯一显示弹出窗口的浏览器是safari。我试图实现一个testclient。不幸的是,身份验证再次失败,出现403错误。有人知道如何解决这个问题吗?我已经按照你描述的方式安装了证书。同样的错误也会发生。没有要求客户提供他的证书。行为配置是否正确?在您的案例中,客户端和服务器是否都在同一台机器上?如果不是,那么客户端证书的存储应该是本地计算机,而不是当前用户。不,客户端和服务器不在同一台机器上。是否有可能获取任何日志文件?在这种情况下,客户端证书需要位于服务器上的本地计算机存储中。将其更改为反映在app.config中。如果您可以更新您的问题以包含客户端和服务器配置文件,这将很容易