Tôi đang cố gắng chuyển một ứng dụng khách WCF hiện có để chạy trên Linux dưới Mono. Ngay bây giờ tôi đang thử nghiệm tất cả mọi thứ, tìm ra những gì làm việc trên Mono và những gì không.WCF Mono - BasicHttpBinding với SSL
Khách hàng thực hiện cuộc gọi siêu đơn giản qua basicHttpBinding. Nó hoạt động tốt, cho đến khi tôi kích hoạt SSL (nghĩa là, chỉ định BasicHttpSecurityMode.Transport trong ràng buộc).
- Chạy trên NET trong Windows, nó hoạt động tuyệt vời
- Chạy trên Mono trên Ubuntu 9.10/Mono 2,6 tôi nhận được lỗi sau:
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
Tôi đã đọc các Mono security FAQ; tuy nhiên chứng chỉ SSL trên máy chủ là từ một CA gốc (chứng chỉ đã mua) - do Cơ quan cấp chứng chỉ bảo mật Equifax cấp. Tôi đã chạy công cụ TlsTest trên bản cài đặt Ubuntu dựa trên URL .svc và không có vấn đề/lỗi. Ngoài ra tôi có thể nhấn dịch vụ tốt trong Firefox (không có cảnh báo bảo mật).
Tôi đang thiếu gì?
Cảm ơn câu trả lời của bạn! Tôi đã thử nghiệm bằng cách sử dụng một WebRequest đơn giản với cùng một kết quả. Tuy nhiên tôi nghĩ rằng tôi thấy vấn đề bây giờ - Tôi đã cài đặt Mono 2.6 side-by-side với gói Mono 2.4 đi kèm với Ubuntu 9.10. Tôi đã phải làm điều này, bởi vì các cuộc gọi WCF HTTPS của tôi sẽ luôn thất bại trên 2.4 (Tôi đã nhận được một NotImplementedException từ HttpsTransportBindingElement). Tôi đã thực hiện một ứng dụng thử nghiệm đơn giản tạo ra một WebRequest đơn giản. Khi tôi chạy trong 2.6, nó không thành công với chứng chỉ không hợp lệ. Khi tôi chạy nó trong 2,4, nó hoạt động! Vì vậy, rõ ràng chứng chỉ của tôi không hiển thị với Mono 2.6 ..... – TheNextman