2015-01-08 7 views
6

में ट्रांसपोर्ट स्ट्रीम अपवाद बंद कर दिया है। मैं जावा नेटटी आधारित सर्वर से कनेक्ट करने की कोशिश कर रहा हूं, जो ऑटो स्वयं प्रमाण पत्र जेनरेट करता है (और सर्वर लोगों ने मुझे बताया, जो ग्राहक से किसी प्रमाण पत्र को स्वीकार कर रहा है अभी के लिए पक्ष)।सॉकेट और प्रमाणीकरण विफल रहा क्योंकि रिमोट पार्टी ने डब्ल्यूपीएफ

मेरा काम टीसीएस एन्क्रिप्टेड कनेक्शन में टीसीपी सॉकेट कनेक्शन माइग्रेट करना था।

सबसे पहले, मैं NetworkStream में TcpSocket परिवर्तित:

using (var client = new NetworkStream(connection.TcpSocket)) 
{ 
    if (client.CanRead) 
    { 
     client.BeginRead(recvState.DataBuffer, 0, recvState.DataBuffer.Length, ReceiveCallback, 
     recvState); 
    } 
} 

और कहा कि पूरी तरह से काम कर रहा है। तो फिर, मैं SslAuthentication निर्माण करने का फैसला - यहाँ की तरह:

using (var client = new NetworkStream(connection.TcpSocket)) 
using (var sslStream = new SslStream(client, false, App_CertificateValidation)) 
{ 
    var clientCertificate = new X509Certificate2("client.pfx"); 
    var clientCertificateCollection = new X509Certificate2Collection(new[] { clientCertificate }); 
    sslStream.AuthenticateAsClient("MyServer", clientCertificateCollection, SslProtocols.Tls, false); 

    if (sslStream.CanRead) 
    { 
     sslStream.BeginRead(recvState.DataBuffer, 0, recvState.DataBuffer.Length, ReceiveCallback, 
     recvState); 
    } 
} 

कहाँ client.pfx कोई पासवर्ड के साथ यादृच्छिक प्रमाण पत्र, परियोजना में एक फ़ाइल के रूप में है और यह भी certmgr.msc में Current User Certificates > Personal > Certificates में आयात किया।

समस्या AuthenticateAsClient फेंकता एक

System.IO.IOException है: प्रमाणीकरण विफल क्योंकि दूरस्थ पार्टी परिवहन स्ट्रीम अपवाद बंद कर दिया है।

साथ ही, अगर प्रमाणीकरण एएसटीलिएंट विधि में होस्टनाम का अर्थ कुछ भी है, तो सर्वर हर प्रमाणपत्र स्वीकार करता है? क्या मुझे कुछ महत्वपूर्ण रखना चाहिए?

मैं अभी भी सर्वर लोगों से संपर्क कर सकता हूं, इसलिए मैं उन्हें सबकुछ पूछ सकता हूं - क्या हमें कोई अतिरिक्त जानकारी चाहिए?

+0

क्या आपको यह तय हुआ? मेरे पास एक ही स्थिति है। धन्यवाद –

+0

नहीं। अभी भी मदद के लिए इंतजार कर रहा है। – Zozo

उत्तर

6

यह काम कर रहा है।

सर्वर जो सॉकेट सर्वर MUST होस्ट कर रहा है इसके प्रमाणन भंडारण प्रमाण पत्र निजी कुंजी के साथ पर स्थापित किया है। यदि आप इसके बिना इसे इंस्टॉल करते हैं (केवल प्रमाण पत्र या केवल सार्वजनिक कुंजी) तो आपको प्रमाणीकरण विफलता की त्रुटियां मिलेंगी।

मुझे उम्मीद है कि यह मदद करेगा।

+0

मैं इस जवाब को हमारी सर्वर टीम को पास करने जा रहा हूं। धन्यवाद! – Zozo

+0

मेरा आवेदन 8 से 10 घंटों तक मेल भेजता है तो यह इस तरह अपवाद फेंकता है "प्रमाणीकरण विफल हुआ क्योंकि रिमोट पार्टी ने परिवहन धारा बंद कर दी है।" इस मामले से निपटने के लिए कैसे? कृपया मदद करे। –

+0

दोस्त, आपने अभी इस पोस्ट के साथ अपने गधे को बचाया है। आपको बहुत - बहुत धन्यवाद! अगर मैं कर सकता तो मैं आपको पूरी तरह से अपने सभी प्रतिष्ठा अंक देता हूं! जबरदस्त हंसी! – Brandon

संबंधित मुद्दे

 संबंधित मुद्दे