Mam webservice, który wymaga podpisania kopert SOAP w komunikacji w obie strony. Moją wiadomość podpisuję swoim certyfikatem, serwer to rozpoznaje i odsyła swoją wiadomość podpisaną jego certyfikatem, którego klucz publiczny mam u siebie. Używam standardowej definicji behaviors w pliku konfiguracyjnym:

<behaviors>
    <endpointBehaviors>
        <behavior name="TehRightBehaviour">
            <clientCredentials>
                <clientCertificate findValue="my_cert" storeLocation="CurrentUser" x509FindType="FindBySubjectName" />
                <serviceCertificate>
                    <defaultCertificate findValue="Service_cert1" x509FindType="FindBySubjectName" />
                    <authentication revocationMode="NoCheck" certificateValidationMode="None" />
                </serviceCertificate>
            </clientCredentials>
        </behavior>
    </endpointBehaviors>
</behaviors>

sekcja client wygląda tak:

<client>
    <endpoint address="https://xxxyyy:8081/cm/main"
        behaviorConfiguration="TehRightBehaviour"
        binding="customBinding"
        bindingConfiguration="TehRealBinding"
        contract="BrightMain.CMMainService"
        name="cmmain">
           <identity>
                  <dns value="Service_cert1" />
            </identity>
      </endpoint> 
</client>

Cały szkopuł w tym, że webservice zwraca koperty podpisane więcej niż jednym certyfiatem. Czasem jest to Service_cert1, czasem Service_cert2. Czy jest możliwość jednoczesnego wskazania mu obu certyfikatów, tak żeby sam załatwiał sprawę sprawdzenia podpisu? Jak się realizuje takie rozwiązania po stronie klienta?