2013-01-24 16 views
9

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?

+4

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

+0

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

+1

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

Trả lời

0

Hãy thử sau:


0) Recheck gì chipers được hỗ trợ

1) Kiểm tra trong máy chủ của bạn nếu bạn đã sau cập nhật bảo mật được cài đặt (bạn cần phải loại bỏ nó) http://support.microsoft.com/kb/2898850#AppliesToProducts

Nếu bạn sử dụng win 8.1, nó sẽ bị tắt, không chắc chắn về những người khác. Nếu bạn muốn biết lý do tại sao Microsoft encorages bạn để vô hiệu hóa RC4 đọc this.

2) Tôi không biết rằng SslStream phép bạn chỉ định ciphersuite phép (s), tuy nhiên bạn có thể sử dụng:

http://www.example-code.com/csharp/dh_key_exchange.asp


Java "ADH-RC4-MD5" nên được

Supported Protocol = tls (or ssl version 3) 
Cipher Algorithm Type = Rc4, 
Hash Algorithm Type = Md5 128 bit, 
Exchange Algorithm Type = DiffieHellman 
Các vấn đề liên quan