Pracuję nad usługą WCF, która ma być używana przez klienta, który nie został opracowany przeze mnie, a także nie jest .NET (być może Java).Wzajemne uwierzytelnianie SSL za pomocą WCF: brak certyfikatu CertificateRequest i certyfikatu Potwierdź w fazie uzgadniania
W każdym przypadku usługa powinna obsługiwać wzajemne uwierzytelnianie SSL, gdy zarówno usługa, jak i klient uwierzytelniają się certyfikatami X.509 w warstwie transportowej. Certyfikaty zostały wymieniane między stronami w odpowiednim momencie.
Mój problem polega na tym, że nie mogę uzyskać odpowiedniej konfiguracji WCF, tak aby uwierzytelnianie certyfikatu klienta działało poprawnie. Co się spodziewać, że w ramach uzgadniania TLS, serwer zawiera również Certificate Request
, jak widać poniżej:
Następnie, klient powinien odpowiedzieć z `Certyfikat Sprawdź” między innymi:
The (najnowsza) konfiguracja usługi jest ten jeden. Używam niestandardowego powiązania z trybem uwierzytelniania ustawionym na MutualSslNegotiated
.
<bindings>
<customBinding>
<binding name="CarShareSecureHttpBindingCustom">
<textMessageEncoding messageVersion="Soap11" />
<security authenticationMode="MutualSslNegotiated"/>
<httpsTransport requireClientCertificate="true" />
</binding>
</customBinding>
</bindings>
...
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" httpHelpPageEnabled="false" />
<serviceCredentials>
<serviceCertificate findValue="..." storeLocation="LocalMachine" x509FindType="FindByIssuerName" storeName="My" />
<clientCertificate>
<certificate findValue="..." storeName="My" storeLocation="LocalMachine" x509FindType="FindByIssuerName"/>
</clientCertificate>
</serviceCredentials>
</behavior>
</serviceBehaviors>
Cześć przywitania serwera wygląda tak w przypadku wszystkich konfiguracji usług, które próbowałem, bez certyfikatu CertificateRequest.
Inne rzeczy powinienem wymienić:
- Usługa jest własny serwer i nasłuchuje na porcie niż domyślny (nie 443). Certyfikat SSL serwera został powiązany z tym portem.
- Próbowałem również
basicHttpBinding
iwsHttpBidning
z trybem zabezpieczeń ustawionym naTransport
i ustawieniem uwierzytelniania klienta naCertificate
, bez wyników (w rzeczywistości wyniki są takie same).
Wszelkie pomysły będą mile widziane.
Próbowałeś włączyć WCF śledzenie i sprawdzić, czy są jakieś szczegółowe błędy w środku? – UserControl
@UserControl: Tak, śledzenie jest włączone, ale niestety nie ma żadnych powiązanych błędów. –
Dzikie uderzenie - jest szansa, że po stronie serwera brakuje certyfikatów głównych z łańcucha zaufania klienta? Oznacza to, że masz certyfikat klienta, ale brakuje niektórych certyfikatów root w swoim łańcuchu ...? –