2015-08-24 9 views
11

मैं निम्नलिखित कोड का उपयोग कर एक परीक्षण क्लाइंट/सर्वर कनेक्शन बनाने के लिए कोशिश कर रहा हूँ के अनुसार अमान्य है:AuthenticateAsServer दूरदराज के प्रमाण पत्र सत्यापन प्रक्रिया

static void Main(string[] args) 
    { 
     var listenerThread = new Thread(ListenerThreadEntry); 
     listenerThread.Start(); 

     Thread.Sleep(TimeSpan.FromSeconds(1)); 

     var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP); 
     socket.Connect("localhost", Port); 

     var rawStream = new NetworkStream(socket); 
     var stream = new SslStream(rawStream, false, VerifyServerCertificate); 
     var certificate = new X509Certificate(CertsPath + @"test.cer"); 
     var certificates = new X509CertificateCollection(new[] { certificate }); 
     stream.AuthenticateAsClient("localhost", certificates, SslProtocols.Tls, false); 

     Thread.Sleep(TimeSpan.FromSeconds(1)); 
    } 

    private static bool VerifyServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) 
    { 
     return true; 
    } 

    static void ListenerThreadEntry() 
    { 
     var listener = new TcpListener(IPAddress.Any, Port); 
     listener.Start(); 

     var client = listener.AcceptTcpClient(); 
     var serverCertificate = new X509Certificate2(CertsPath + @"\test.pfx"); 
     var sslStream = new SslStream(client.GetStream(), false); 
     sslStream.AuthenticateAsServer(serverCertificate, true, SslProtocols.Tls, false); 

     Thread.Sleep(TimeSpan.FromSeconds(10)); 
    } 

और हो रही "दूरस्थ प्रमाण पत्र के अनुसार अमान्य है सत्यापन प्रक्रिया "प्रमाणीकरणएसर सर्वर विधि में त्रुटि संदेश। प्रमाण पत्र बनाया गया था और इन आदेशों का उपयोग करके फ़ाइल में सहेजा गया था:

makecert.exe -r -pe -n "CN=localhost" -a sha1 -sky exchange -sv test.pvk test.cer 
pvk2pfx -pvk test.pvk -spc test.cer -pfx test.pfx 

मुझे क्या याद आया?

उत्तर

2

मैं कहाँ अपनी प्रक्रिया में आप प्रमाणपत्र आप प्रमाणीकरण के लिए उपयोग करने के लिए भरोसा नहीं जोड़ देख सकते हैं लगता है। पैरामीटर 4 से AuthenticateAsServer() पैरामीटर के रूप में false पास करने के लिए केवल रद्द करने के लिए चेक छोड़ देता है, यह सामान्य रूप से ट्रस्ट के लिए चेक को छोड़ नहीं देता है।

  • खुद के प्रमाण पत्र उत्पन्न न करें लेकिन यह एक प्रमाणपत्र प्राधिकार कि Windows में डिफ़ॉल्ट रूप से विश्वसनीय है द्वारा उत्पन्न की है:

    तो तुम यह काम करने के लिए निम्नलिखित विकल्प हैं। इससे कुछ पैसे खर्च होंगे, लेकिन वहाँ कुछ सस्ते सीए भी हैं, इसे थॉवे प्रमाण पत्र की आवश्यकता नहीं है।

  • व्यक्तिगत प्रमाणपत्रों की सूची में इसे आयात करके प्रमाण पत्र पर विश्वास जोड़ें
  • यदि आपने पहले से ही एक स्व-हस्ताक्षरित सीए प्रमाणपत्र बनाया है जो विश्वसनीय रूट प्रमाणपत्रों (जो कि कंपनियों या संगठनों में आम है) की सूची में पहले से जोड़ा गया है, , कि CA प्रमाणपत्र
  • बिल्कुल प्रमाणित नहीं किया है के साथ अपने प्रमाण पत्र पर हस्ताक्षर (लेकिन संभव है कि आप नहीं करना चाहते हैं)
3

जांच निम्न चरणों का, काम करने,

1)First save the certificate in a file 
2)Run MMC 
3)Open the Certificate Manager (certmgr.msc in C:\Windows\System32) 
4)You will see it opens 'Certificates - Current User' 
5)In the menu, choose File, Add/Remove Snap-In 
6)Now press Add, select 'Certificates' and select 'Computer Account' 
7)Select the Local Computer 
8)Now you have two snap-ins: 
9)Certificates - Current User 
10)Certificates (Local Computer) 
11)Now import the certificate in "Certificates (Local Computer)\Trusted Root Certificates\Certificates" 
+0

मैं वैश्विक प्रमाणपत्र संग्रह में जोड़ने के लिए है? – user626528

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