2012-01-13 26 views
6

Tôi đang cố định cấu hình dịch vụ WCF với bảo mật. Tôi đã tạo 2 chứng chỉ (cho máy chủ và phía máy khách) được lưu trữ trong LocalComputer \ Personal Certificates. cấu hình của tôi là:Ngoại lệ: Chứng chỉ ứng dụng khách không được cung cấp

Server:

<netTcpBinding> 
    <binding name="defaultBinding"> 
     <security mode="Transport"> 
     <transport clientCredentialType="Certificate"/> 
     </security> 
    </binding> 
</netTcpBinding> 

<service name="..." behaviorConfiguration="serviceBehavior"> 
    <endpoint address="..." binding="netTcpBinding" bindingConfiguration="defaultBinding" contract="..."> 
     <identity> 
     <dns value="ClientSide"/> 
     </identity> 
    </endpoint> 
</service> 

<behavior name="serviceBehavior"> 
    <serviceCredentials> 
     <serviceCertificate storeLocation="LocalMachine" storeName="My" findValue="ServerSide" x509FindType="FindBySubjectName"/> 
     <clientCertificate> 
      <authentication certificateValidationMode="None" revocationMode="NoCheck"/> 
     </clientCertificate> 
    </serviceCredentials> 
<behavior> 

Chủ đầu tư:

<netTcpBinding> 
    <binding name="defaultBinding"> 
     <security mode="Transport"> 
     <transport clientCredentialType="Certificate"/> 
     </security> 
    </binding> 
</netTcpBinding> 

<endpoint name="..." binding="netTcpBinding" bindingConfiguration="defaultBinding" contract="..." 
      behaviorConfiguration="endpointBehavior"> 
    <identity> 
    <dns value="ServerSide"/> 
    </identity> 
</endpoint> 

<behavior name="endpointBehavior"> 
    <clientCredentials> 
     <serviceCertificate> 
      <authentication certificateValidationMode="None" revocationMode="NoCheck"/> 
     </serviceCertificate> 
     <clientCertificate storeLocation="LocalMachine" storeName="My" findValue="ClientSide" x509FindType="FindBySubjectName"/> 
    </clientCredentials> 
<behavior> 

Tôi nhận được ngoại lệ: Giấy chứng nhận của khách hàng không được cung cấp. Chỉ định chứng chỉ ứng dụng khách trong ClientCredentials

Tôi đã thử nhiều hướng dẫn nhưng không có hướng dẫn nào hoạt động. Bất kì lời đề nghị nào?

Trả lời

6

Câu trả lời thực tế là trong Ngoại lệ. Bạn không có chứng chỉ ứng dụng khách. Bạn định nghĩa một giấy chứng nhận dịch vụ cấp Giấy chứng nhận của khách hàng với điều này

<clientCredentials> 
     <serviceCertificate> 
      <authentication certificateValidationMode="None" revocationMode="NoCheck"/> 
     </serviceCertificate> 
     <clientCertificate storeLocation="LocalMachine" storeName="My" findValue="ClientSide" x509FindType="FindBySubjectName"/> 
    </clientCredentials> 

Nhưng những gì bạn thực sự nên làm là xác định một giấy chứng nhận của khách hàng đối với khách hàng

<system.serviceModel> 
    <behaviors> 
     <endpointBehaviors> 
     <behavior name="endpointBehavior"> 
      <clientCredentials> 
       <clientCertificate storeLocation="LocalMachine" storeName="My" findValue="ClientSide" x509FindType="FindBySubjectName" /> 
       <serviceCertificate> 
        <authentication certificateValidationMode="None" revocationMode="NoCheck" /> 
       </serviceCertificate> 
      </clientCredentials> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 
</system.serviceModel> 

này ít nhất phải giải quyết The client certificate is not provided. Specify a client certificate in ClientCredentials ngoại trừ của bạn.

Các vấn đề liên quan