मुझे केवल एक सिफर - "एडीएच-आरसी 4-एमडी 5" का उपयोग कर सर्वर से कनेक्ट करने की आवश्यकता है। मैं एक सामान्य समाधान की तलाश में हूं जो मुझे यह जांचने में सक्षम करेगा कि सर्वर किस सिफर का उपयोग कर रहा है (मैं एक प्रावधान सर्वर हूं जो क्लाइंट के रूप में कई अन्य अनुप्रयोग सर्वरों के लिए कार्य करता है और कनेक्ट करने और डेटा प्राप्त करने की आवश्यकता होती है - प्रत्येक बार जब भी यह हो सकता है एक अलग सर्वर हो)।डिफ़ॉल्ट से अलग सिफर का उपयोग
प्रवाह मैं अब तक था:
TcpClient tcpClient = new TcpClient(serverName, port);
SslStream sslStream = new SslStream(tcpClient.GetStream(), false, null, null, EncryptionPolicy.RequireEncryption);
sslStream.AuthenticateAsClient(HostName);
मैं AuthenticateAsClient
में दुर्घटना पर रहते हैं। कारण यह है कि एक एएस केवल निर्दिष्ट साइफर के साथ काम कर रहा है।
मैंने सत्यापित किया है कि यह SslScan tool के साथ मामला है।
मैंने इस सिफर को नीति संपादक (कमांड लाइन में gpedit.msc) के माध्यम से दर्ज करने का प्रयास किया है लेकिन फिर से कोई भाग्य नहीं है।
असल में मैं इस सिफर को कोड से गतिशील रूप से उपयोग करने का एक तरीका ढूंढ रहा हूं।
मैं एक काम कर जावा कोड है:
sslsocket.setNeedClientAuth(true);
String[] list = new String[1];
list[0] = "ADH-RC4-MD5";
sslsocket.setEnabledCipherSuites(list);
C# बराबर का कोई भी विचार?
रास्ता एसएसएल काम करता है वह यह है कि होना चाहिए क्लाइंट सर्वर पर समर्थन करने वाले सिफर सूट की एक सूची भेजता है। (यह 'AuthenticateAsClient' विधि द्वारा किया जाता है।) सर्वर सिफर सुइट को चुनता है जिसे वह उपयोग करना चाहता है। यदि सूची में सिफर सुइट नहीं है जो सर्वर का समर्थन करता है, तो SSL कनेक्शन निरस्त कर दिया जाता है। सुपर त्वरित उत्तर के लिए – dtb
धन्यवाद। लेकिन क्या होगा यदि मुझे पता है कि सर्वर में केवल एक सिफर है जिसके साथ यह काम करता है, और मैं, क्लाइंट के साथ काम करने की आवश्यकता है? – gilad
फिर आपको क्लाइंट कार्यान्वयन की आवश्यकता है जो इस सिफर सूट का भी समर्थन करता है। .NET SslStream को नए सिफर सूट के साथ बढ़ाया नहीं जा सकता है; मेरा मानना है कि यह विंडोज़ जो कुछ भी प्रदान करता है उसका उपयोग करता है। – dtb