2012-04-13 18 views
6

Zasadniczo muszę zabezpieczyć moje żądania dotyczące tej usługi.Wywoływanie usługi WWW Java z klienta C# przy użyciu certyfikatów JKS i/lub PFX

jakie zostały dostarczone klientowi JAR testową i dwa pliki, trust.jks i Client.pfx, ale nie mam pojęcia, jak z nich korzystać: Rozumiem klasa X509Certificate2 jest zaangażowany w jakiś sposób.

Linia poleceń do wykonania klienta testowego jest następujący:

java -Djavax.net.ssl.trustStore=trust.jks -Djavax.net.ssl.trustStorePassword=******** -Djavax.net.ssl.trustStoreType=JKS -Djavax.net.ssl.keyStore=Client.pfx -Djavax.net.ssl.keyStoreType=pkcs12 -Djavax.net.ssl.keyStorePassword=******** -jar TestClient.jar https://myServiceurl 

To działa, więc mogę zobaczyć zarówno usługę, a sama usługa powinna być prawidłowo skonfigurowany.

Mój klient C# (nie jest to kierowanie .NET 2.0) korzysta z normalnego Web Reference wykonać żądania:

wsReferenceClient service = new wsReferenceClient(); 
//certificate code here ? 
//maybe service.ClientCertificates.Add(<X509Certificate2 object built somehow>); ? 
service.MyRequest(myParameters); 

Ustawienia serwera powinien być ustawiony prawidłowo.

Grzebałem przy metodach X509Certificate2, ale nie mogę wyjść z czymś, co ma sens, więc odpowiedź na pytanie "czego próbowałeś?" Pytanie brzmi: "Naprawdę nie wiem, co należy wypróbować w pierwszej kolejności".

Każda pomoc będzie naprawdę doceniana.

+0

AFAIK sklep JKS jest autorskim rozwiązaniem Java. Musisz wyeksportować klucze publiczne (być może cały łańcuch) za pomocą keytool i zaimportować je do magazynu w formacie otwartym, takim jak PKCS. – home

+0

Prawidłowo, chociaż wolałbym brać z niego zaufane certyfikaty i używać ich. Plik pfx powinien już zawierać klucz prywatny i łańcuch certyfikatów. –

+0

Więc, jeśli dobrze rozumiem, muszę plik JKS jest jadalne do mojego klienta w jakiś sposób? Myślę, że będę google w pobliżu trochę więcej ... – Alex

Odpowiedz

7

Okazuje się, że nie trzeba nic robić z plikiem JKS.

wsReferenceClient service = new wsReferenceClient(); 
X509Certificate2 cert = new X509Certificate2(); 
cert.Import("Client.pfx", "<the password>", DefaultKeySet); 
service.ClientCertificates.Add(cert); 
service.MyRequest(myParameters); 

To pozwala moim żądaniom HTTPS przejść pomyślnie.

Powiązane problemy