Aktywne Wpisy

annlupin +34
źródło: annlupin0099987
Pobierz
annlupin +4
a jakie muzyczki do wina wicowie
źródło: annlupin6789098
PobierzSkopiuj link
Skopiuj link
źródło: annlupin0099987
Pobierz
źródło: annlupin6789098
PobierzRegulamin
Reklama
Kontakt
O nas
FAQ
Osiągnięcia
Ranking
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.
Zgaduję, że certyfikat serwera nie jest zaufany w kliencie i się wywala.
Podaj kod błędu albo porównaj w wireshark jak wygląda Client Hello dla SOAPUI i dla Twojej apki.
Może spróbuj ustawić Ssl3 zamiast TLS?
https://github.com/Esri/resource-proxy/issues/399
@Vetinari: Client Hello wygląda tak. Ten po lewej się udaje (SOAPUI), ten po prawej nie jestem pewien, bo dalej jeszcze coś się dzieje. Zaraz pokażę czym się różni.
źródło: comment_RPxUdSiLh19VvulM8VwCyO43lVTTAFwz.jpg
Pobierzźródło: comment_awBNwNf36Ml2JF3rkLrXSPzjIANOWTly.jpg
PobierzDruga sprawa to logi z wireshark wyglądają jakby pokazywały tylko wysłane pakiety, a nie oderbane.
Postaw też breakpoint w tym callbacku od certyfikatu i zobacz czy tam wchodzi, może to nie działa i zrywa, bo nie akceptuje certyfikatu?
@Vetinari: Ah, jeszcze filtr w drugą stronę muszę ustawić. Tak to wygląda w obie strony już. Oczywiście w wersji nieudanej. Tam jest Unknown CA (48). Serwer mi to odesłał.
źródło: comment_eIIEQPdDFhOYSlskgydY3BPTh7xVbFJj.jpg
PobierzZrób w ServicePointManager.ServerCertificateValidationCallback lambdę z "retrun true" najwcześniej w kodzie jak się da, postaw na tym breakpoint i zobacz czy w ogóle wchodzi (albo
@Vetinari: Już jest tak zrobione.
Natomiast dla tej wiadomości source = ich IP, destination = moje IP.
źródło: comment_uYDpkmF7EP7XPZOHiIYhI3fTIGEBFxES.jpg
Pobierzhttps://stackoverflow.com/questions/33627593/c-sharp-net-how-to-allow-a-custom-root-ca-for-https-in-my-application-on
https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/transport-security-with-certificate-authentication
Generalnie tutaj jest połączenie TLS sygnowane certyfikatem + potem jest WSSecurity w nagłówku SOAP. Ale do tego jeszcze nie doszliśmy.
źródło: comment_kiq1AYX0Z3qNuUTg95XoRTOSmNs5hUTv.jpg
Pobierz1) Znalazł w necie podobną konfigurację i porównał czy nie ma błędu, np (jest dużo więcej):
https://stackoverflow.com/questions/10853606/how-can-i-convert-this-app-config-wcf-client-configuration-to-code
2) Poprosił serwer o logi z Twojego połączenia i sprawdzenie czy przysyłasz certyfikat a jeżeli tak to poprawny. Jeżeli masz w ogóle prywatny klucz z serwera to możesz go
FaultException: Missing wsse:Security header in request
No ale teraz się p--------i że koperta jest niepodpisana a nie że "won stąd robaku bo nie masz certyfikatu" ( ͡° ͜ʖ ͡°) Wiesz może jak podpisać envelopa SOAPowego?
https://stackoverflow.com/questions/3383039/soap-body-is-not-encrypted-when-x509-security-implemented-on-wcf-service/3383467
Wszędzie się powtarza to wssBinding.