Tôi cần kết nối với máy chủ chỉ sử dụng một mật mã - "ADH-RC4-MD5". Tôi đang tìm một giải pháp chung cho phép tôi kiểm tra mật mã máy chủ đang sử dụng (Tôi là một máy chủ cấp phép hoạt động như một máy khách với nhiều máy chủ ứng dụng khác và cần kết nối và lấy dữ liệu - mỗi lần có thể là một máy chủ khác).Sử dụng mật mã khác với mặc định
Dòng chảy tôi có cho đến nay là:
TcpClient tcpClient = new TcpClient(serverName, port);
SslStream sslStream = new SslStream(tcpClient.GetStream(), false, null, null, EncryptionPolicy.RequireEncryption);
sslStream.AuthenticateAsClient(HostName);
tôi tiếp tục sụp đổ trong AuthenticateAsClient
. Lý do là một AS chỉ làm việc với mật mã đã đề cập.
Tôi đã xác minh đây là trường hợp với SslScan tool.
Tôi đã cố gắng nhập mật mã này thông qua trình chỉnh sửa chính sách (gpedit.msc trong dòng lệnh) nhưng lại không có may mắn.
Về cơ bản, tôi đang tìm cách sử dụng mật mã này từ mã động.
Tôi có một mã Java làm việc:
sslsocket.setNeedClientAuth(true);
String[] list = new String[1];
list[0] = "ADH-RC4-MD5";
sslsocket.setEnabledCipherSuites(list);
Bất kỳ ý tưởng về C# tương đương?
Cách SSL hoạt động là các client gửi danh sách các bộ mã hóa mà nó hỗ trợ cho máy chủ. (Điều này được thực hiện bằng phương thức 'AuthenticateAsClient'.) Máy chủ chọn bộ mã hóa mà nó muốn sử dụng. Nếu danh sách không chứa bộ mã hóa mà máy chủ hỗ trợ, thì kết nối SSL sẽ bị hủy. – dtb
cảm ơn câu trả lời cực nhanh. nhưng nếu tôi biết rằng máy chủ chỉ có một mật mã mà nó hoạt động, và tôi, như một khách hàng cần phải làm việc với nó? – gilad
Sau đó, bạn cần tìm một bản cài đặt máy khách hỗ trợ bộ mã hóa này. .NET SslStream không thể mở rộng với các bộ mã hóa mới; Tôi tin rằng nó chỉ sử dụng bất cứ thứ gì Windows cung cấp. – dtb