2013-01-24 34 views
9

我只需要使用一個密碼 - 「ADH-RC4-MD5」連接到服務器。 我正在尋找一個通用的解決方案,它將使我能夠檢查服務器正在使用的密碼(我是一個配置服務器,充當許多其他應用服務器的客戶端,需要連接並獲取數據 - 每次都可以成爲一個不同的服務器)。使用與默認密碼不同的密碼

我到目前爲止的流量爲:

TcpClient tcpClient = new TcpClient(serverName, port); 
SslStream sslStream = new SslStream(tcpClient.GetStream(), false, null, null,    EncryptionPolicy.RequireEncryption); 
sslStream.AuthenticateAsClient(HostName); 

我一直在崩潰的AuthenticateAsClient。原因是一個AS只能使用上述密碼。

我已驗證這是SslScan tool的情況。

我試圖通過政策編輯器(gpedit.msc在命令行) 輸入此密碼,但再次沒有運氣。

基本上我正在尋找一種方法來動態地使用代碼中的密碼。

我有一個工作Java代碼:

sslsocket.setNeedClientAuth(true); 
String[] list = new String[1]; 
list[0] = "ADH-RC4-MD5"; 
sslsocket.setEnabledCipherSuites(list); 

C#等同的任何想法?

+4

SSL的工作方式是,客戶端將它支持的密碼套件列表發送給服務器。 (這是通過'AuthenticateAsClient'方法完成的。)服務器選擇它想要使用的密碼套件。如果列表不包含服務器支持的密碼套件,則SSL連接將中止。 – dtb

+0

感謝您的超級快速回復。但是如果我知道服務器只有一個密碼,那麼我作爲客戶端需要使用它嗎? – gilad

+1

然後你需要找到一個支持這個密碼套件的客戶端實現。 .NET SslStream不能使用新的密碼套件進行擴展;我相信它只是使用Windows提供的任何東西。 – dtb

回答

0

嘗試以下操作:


0)Recheck什麼chipers支持

1)檢查您的服務器,如果您有以下安裝安全更新(你需要將其刪除http://support.microsoft.com/kb/2898850#AppliesToProducts

如果您使用win 8.1,它將被禁用,不確定其他人。如果您想知道Microsoft爲何要禁用RC4,請閱讀this

2)我不知道,SslStream允許您指定允許的密碼組(S),但是你可以使用:

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


Java的 「ADH-RC4,MD5」 應該是

Supported Protocol = tls (or ssl version 3) 
Cipher Algorithm Type = Rc4, 
Hash Algorithm Type = Md5 128 bit, 
Exchange Algorithm Type = DiffieHellman