Laden...

Two-Way SSL mit WCF

Erstellt von chrized vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.863 Views
C
chrized Themenstarter:in
33 Beiträge seit 2008
vor 13 Jahren
Two-Way SSL mit WCF

Hallo zusammen

Ich habe einen WCF Service, der als Windows Service betrieben wird. Die Clients sind mit .Net und Java geschrieben. Funktioniert alles soweit. Nun soll der Transportkanal per Two-Way-SSL gesichert werden, aber wie konfiguriere ich das richtig?

Aktuell sieht mein Config so aus:

<configuration>
<system.serviceModel>  
<service name="service1" behaviorConfiguration="beh1">
         <endpoint address="secure" contract="Icontract1" binding="wsHttpBinding" bindingConfiguration="binding1"></endpoint>
         <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
<behaviors>
    <serviceBehaviors>
         <behavior name="beh1">
              <serviceDebug includeExceptionDetailInFaults="true"/>
              <serviceMetadata httpGetEnabled="true"/>
              <serviceCredentials>
                <!--certificate storage path in the server -->
                <serviceCertificate findValue="TempCA" x509FindType="FindBySubjectName" storeLocation="LocalMachine"  storeName="My"/>
                <issuedTokenAuthentication allowUntrustedRsaIssuers="true"/>
                <!--certificate storage path in the client -->
                <clientCertificate>
                  <certificate findValue="TempCA" x509FindType="FindBySubjectName" storeLocation="LocalMachine" storeName="My"/>
                </clientCertificate>                
                <userNameAuthentication userNamePasswordValidationMode="MembershipProvider"/>
              </serviceCredentials>
         </behavior>
     </serviceBehaviors>
     <endpointBehaviors>
        <behavior name="beh1">
          <clientCredentials>
            <!--certificate storage path in the client -->
            <clientCertificate findValue="TempCA" storeLocation="LocalMachine" x509FindType="FindBySubjectName" storeName="My"/>
            <serviceCertificate>
              <authentication certificateValidationMode="PeerOrChainTrust"/>
            </serviceCertificate>
          </clientCredentials>
        </behavior>
      </endpointBehaviors>
</behaviors>
<bindings>
     <wsHttpBinding>
        <binding name="binding1">
          <security mode="Message">
            <!--security mode of certificate -->
            <message establishSecurityContext="false" clientCredentialType="Certificate"/>
          </security>
        </binding>        
      </wsHttpBinding>
</bindings>
</system.serviceModel>
</configuration>

Wenn ich nicht irre ist das aber lediglich One-Way SSL, da der Service zwar den vom Client übermittelten PublicKey mit dem eigenen PrivateKey validiert, aber nicht umgekehrt. Wenn ich Two Way SSL richtig interpretiere, müsste der Client auch über ein separates zweites Zertifkat verfügen, wo der Service den PublicKey dazu hat. Aber wie konfiguriere ich sowas?

Besten Dank für eure Unterstützung.

Grüsse
chrized