Próbuję przenieść istniejącą aplikację kliencką WCF, aby działała na systemie Linux w trybie Mono. Teraz testuję wszystko, zastanawiając się, co działa na Mono, a co nie.WCF Mono - BasicHttpBinding z SSL
Klient wykonuje super proste wywołanie basicHttpBinding. Działa doskonale, dopóki nie włączę SSL (to znaczy określ BasicHttpSecurityMode.Transport w powiązaniu).
- Running on .NET w systemie Windows, działa świetnie
- Running on Mono na Ubuntu 9.10/Mono 2.6 pojawia się następujący błąd:
Exception in async operation: System.Net.WebException: Error getting response stream (Write: The authentication or decryption has failed.): SendFailure ---> System.IO.IOException: The authentication or decryption has failed. ---> Mono.Security.Protocol.Tls.TlsException: Invalid certificate received from server. Error code: 0xffffffff800b010a
Czytałem Mono security FAQ; jednak certyfikat SSL na serwerze pochodzi z głównego CA (zakupionego certyfikatu) - wydanego przez Equifax Secure Certificate Authority. Uruchomiłem narzędzie TlsTest na instalacji Ubuntu pod adresem URL .svc i nie ma problemów/błędów. Mogę również zapłacić grzywnę za usługę w Firefoksie (brak ostrzeżeń o zabezpieczeniach).
Czego mi brakuje?
Dzięki za odpowiedź! Testowałem przy użyciu prostego testu WebRequest z tym samym wynikiem. Myślę jednak, że teraz widzę problem - zainstalowałem Mono 2.6 równolegle z pakietem Mono 2.4 dostarczanym z Ubuntu 9.10. Musiałem to zrobić, ponieważ moje wywołania HTTPS WCF zawsze kończyły się niepowodzeniem w wersji 2.4 (otrzymywałem wyjątek NotImplementedException z HttpsTransportBindingElement). Zrobiłem prosty test aplikacji, która sprawia, że prosty WebRequest. Kiedy uruchamiam w wersji 2.6, kończy się niepowodzeniem z niepoprawnym certyfikatem. Kiedy uruchomię go w wersji 2.4, działa! Więc oczywiście mój certyfikat nie jest widoczny dla Mono 2.6 ..... – TheNextman