Wpis z mikrobloga

#csharp #programowanie #webdev

Komunikował się ktoś kiedyś za pomocą C# z webserwisem postawionym na Javie? Chodzi mi tu o sam kanał TLS połączenia, bo to już tutaj serwer gadać ze mną nie chce i dostaję raz po raz "Nie można utworzyć bezpiecznego kanału dla protokołu SSL/TLS z uwierzytelnieniem". "Wystawiciel" serwisu twierdzi, że to są jakieś standardowe ustawienia dla Javy, serwer HTTPS zapewne Apache zaś z mojej strony już masy rzeczy próbowałem i nawet raz mi się nie udało połączyć.

Na ten sam adres z poziomu przeglądarki jestem w stanie wejść jak podam odpowiedni certyfikat, ten sam certyfikat (.p12) ustawiony do połączenia z poziomu kodu i nie da rady. SOAPUI też się łączy z użyciem tego certyfikatu i nie ma problemu (tam jest bodaj obustronna weryfikacja, po swojej stronie mam debugowo ustawiony callback tak, że nieważne co mi zwrócą - to i tak zawsze będzie true).

Debugując te requesty Wiresharkiem ewidentnie widać, że .NET chce jakoś inaczej otworzyć te połączenia niż się spodziewają. Próbowałem już ustawiać różne ServicePointManager.SecurityProtocol, ale nic to nie dało (zresztą tam jest TLS 1.2, bo w Wiresharku widać).

Co jeszcze może być nie tak? To mi wygląda na jakąś różnicę w samym wykonywaniu handshake, bo jak certyfikat jest zły to mi zwraca informację o błędnym certyfikacie i żebym się walił na ryj.
  • 25
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Vetinari: Z tym sobie poradziłem już chwilę temu. Teraz jest problem z certyfikatem do nagłówka.

"no certificates were found for decryption (keyid) "

Muszę im jakoś przekazać ten drugi certyfikat i tak średnio wiem jak. Bo mamy już certyfikat do TLS i chyba są już zadowoleni. Tylko jeszcze trzeba przekazać certyfikat uwierzytelniający dane.
  • Odpowiedz
@Vetinari: To nadal nie rozwiązuje problemu, bo jest nieprzekazany klucz użytkownika którym jest sygnowana wiadomość. Przekazałem tylko klucz uwierzytelniania systemu, a do danych jest inny.
  • Odpowiedz