Używanie certyfikatu Wcf SSl przez Tcp bez certyfikatu klienta (tylko po stronie serwera)

Czy istnieje sposób użycia protokołu WCF SSL z NetTcpBinding, który nie wymagałby zainstalowania certyfikatu klienta na komputerze klienta? (SSL V2, jeśli się nie mylę).

chcemy, aby certyfikat serwera znajdował się w zaufanym magazynie klienta w celu uwierzytelnienia, a szyfrowanie wiadomości za pomocą klucza publicznego serwera, co oznacza, że ​​tylko serwer będzie posiadał certyfikat klucza prywatnego.

używamy NetTcpBinding, a nie CustomBinding po obu stronach. Jeśli można to zrobić, jaka jest prawidłowa konfiguracja? (w konfiguracjach klienta i serwera)

Z góry dziękuję.

oto moje wcf Configs.

KONFIG SERWERA:



    <configuration>
      <system.serviceModel>
        <bindings>
         <netTcpBinding>
            <binding name="TcpSecureBinding">
            <security mode="Transport">
              <transport clientCredentialType="Certificate"/>            
            </security>
       </binding>
         </netTcpBinding>
       </bindings>
       <behaviors>
         <serviceBehaviors>
           <behavior name="ServiceCredentialsBehavior">          
             <serviceDebug includeExceptionDetailInFaults="True" />
             <serviceMetadata httpGetEnabled="true" />
             <serviceAuthorization 
                 principalPermissionMode="UseWindowsGroups">
             </serviceAuthorization>
          <serviceCredentials>
               <windowsAuthentication includeWindowsGruops="true"            
                                      allowAnonymousLogons="false"/>
               <clientCertificate>
                     <authentication certificateValidationMode="none"/>
               </clientCertificate>
               <serverCertificate
                   findValue="thumbprint"
                   storelocation="LocalMachine"
                   x509FindType="FindMyThumbprint"
                   storeName="My"/>
           </serviceCredentials>
        </behavior>
       </serviceBehaviors>
      </behaviors>
    <services>
        <service behaviorConfiguration="ServiceCredentialsBehavior"
               name="ServiceModel.Calculator">
          <endpoint address="net.tcp://localhost:8040/Calculator"
                  binding="netTcpBinding"
                  bindingConfiguration="TcpSecureBinding"
                  contract="ServiceModel.ICalculator" >
           <identity>
               <dns value="localhost"/>
           </identity>
         </endpoint>
        </service>
     </services>
    </system.serviceModel>
    </configuration>

KONFIGURACJA KLIENTA:



    <configuration>
      <system.serviceModel>
        <client>
         <endpoint address="net.tcp://localhost:8040/Calculator"
                behaviorConfiguration="endpointCredentialBehavior"
                binding="netTcpBinding" 
                bindingConfiguration="Binding1" 
                contract="ServiceModel.ICalculator">
          <identity>
               <dns value="localhost"/>
          </identity>
          </endpoint>
        </client>
      <behaviors>
        <endpointBehaviors>
          <behavior name="endpointCredentialBehavior">
          </behavior>
         </endpointBehaviors>
       </behaviors>
       <bindings>
         <netTcpBinding>
          <binding name="Binding1">
            <security mode="Transport">
              <transport clientCredentialType="Windows" />
             </security>
          </binding>
          </netTcpBinding>
        </bindings>
     </system.serviceModel>
    </configuration>

Im dodanie mojego aktualnego konfiguracji serwera i klienta. inne pytania:

na poziomie uwierzytelniania chcemy, aby klient uwierzytelniał certyfikat serwera (wydaje mi się, że klucz publiczny serwera powinien znajdować się w sklepie zaufanego).

Czy polecasz nam korzystanie z zabezpieczeń transportu lub wiadomości?

jeśli chcemy uwierzytelnić klienta i serwer za pomocą NTLM (clientCredentialType = Windows), czy można to zrobić oprócz uwierzytelniania serwera lub zastosować tylko jedno z nich? do tej pory używaliśmy uwierzytelniania NTLM.

teraz otrzymuję wyjątek: „Żądana aktualizacja nie jest obsługiwana przez 'net.tcp: // nazwa_serwera: 8040 /**” Przyczyną może być niedopasowanie powiązań (na przykład zabezpieczenie włączone na kliencie, a nie na serwerze). „Rozumiem, że ten błąd wystąpił, ponieważ klient korzysta z zabezpieczeń systemu Windows i serwera w certyfikacie om, ale gdy zmieniają zabezpieczenia klienta na Certyfikat również , otrzymuję błąd: „Certyfikat klienta nie jest dostarczony”, ale nie chcę ustawiać certyfikatu klienta i jest to częścią mojego głównego problemu.

czytamy, że możemy użyć do uwierzytelniania na serwerze tych tagów:


    <identity>
      <certificate encodedValue="encoded certificate"/>
    </identity>

ale myślę, że to uwierzytelnianie przez tożsamość odbywa się za pomocą zakodowanego certyfikatu, gdy preferujemy, aby identyfikacja certyfikatu była przeprowadzana przez przeszukiwanie klucza publicznego serwera w sklepie klienta (zaufani ludzie). czy ta informacja jest prawdziwa? że te tagi tożsamości są alternatywą dla wyszukiwania klucza publicznego w zaufanym sklepie klienta?

Mam nadzieję, że będziesz w stanie pomóc w tych manierach, dzięki jeszcze raz.

questionAnswers(1)

yourAnswerToTheQuestion