প্রমাণীকরণ ব্যর্থ হয়েছে কারণ দূরবর্তী পক্ষ থেকে পরিবহন প্রবাহ বন্ধ হয়ে গেছে


87

আমি শংসাপত্রের প্রমাণীকরণের সাথে ওপেনএসএসএল সার্ভারকে সংযুক্ত করতে একটি টিসিপি ক্লায়েন্ট বিকাশ করছি। আমি সার্ভার দলের দ্বারা ভাগ করা .crt এবং .key ফাইল ব্যবহার করছি। এই শংসাপত্রগুলি ওপেনএসএসএল কমান্ড দ্বারা উত্পন্ন হয়।

আমি সার্ভার পাস করে পদ্ধতি SslStreamকল করে টিসিপি ক্লায়েন্টকে প্রমাণীকরণ করতে অবজেক্টটি ব্যবহার করছি , এবং ।SslStream.AuthenticateAsClientIPSslProtocols.Ssl3X509CertificateCollection

আমি নিম্নলিখিত ত্রুটি পাচ্ছি:

প্রমাণীকরণ ব্যর্থ হয়েছে কারণ দূরবর্তী পক্ষের পরিবহন প্রবাহ বন্ধ হয়ে গেছে


4
এই সৌন্দর্য-পরবর্তী poodle দিনের মধ্যে একটি সমস্যা পছন্দ: SslProtocols.Ssl3। আপনার চেষ্টা করা উচিত SslProtocols.Tls। নেট .৪ এবং এর উপরে, আপনি ব্যবহার করতে পারেন Tls11বা Tls12এসএসএলপ্রোটোকলস গণনা দেখুন । আপনার অন্যান্য সমস্যা হতে পারে।
jww


ধন্যবাদ আমার সমস্যাটি উইন্ডোজ শংসাপত্রের স্টোর থেকে শংসাপত্রের বিষয় অনুসন্ধানের পরিবর্তে শংসাপত্র এবং পাসওয়ার্ডের শারীরিক পথ থেকে শংসাপত্র সংযুক্ত করে সমাধান করা হবে।
ওদেলু

এখন আমি সমস্ত এসএসএলপ্রোটোকল (এসএসএল 3, টিএসএল 1 এবং টিএসএল 2) থেকে ফলাফল পেতে সক্ষম হয়েছি reply উত্তরের জন্য ধন্যবাদ
ওডেলু

@ ওদেলু, আপনি কীভাবে সমস্যাটি স্থির করলেন? ক্লায়েন্ট সাইডে নাকি সার্ভারে?

উত্তর:


155

আমি সুরক্ষাপ্রোটোকল টিএলএস 1.1 এর মধ্যে সীমাবদ্ধ করার বিরুদ্ধে পরামর্শ দেব।

প্রস্তাবিত সমাধানটি ব্যবহার করা হয়

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls

আরেকটি বিকল্প হ'ল নিম্নলিখিত রেজিস্ট্রি কী যুক্ত করুন:

Key: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 
Value: SchUseStrongCrypto 

এটি লক্ষণীয় যে। নেট 4.6 ডিফল্টরূপে সঠিক প্রোটোকল ব্যবহার করবে এবং এর কোনও সমাধানের প্রয়োজন নেই।


6
বাহ, আপনি কেবল আমার সমস্যা সমাধান করেছেন - আমি সমস্ত ধরণের জিনিস চেষ্টা করছিলাম - এবং ফ্রেমওয়ার্কটিতে নোটটি এখানেই শেষ হয়েছিল। কেবল এটিকে 4.6.1 (4.5 ব্যবহার করে) এ পরিবর্তন করা হয়েছে, এই আশায় যে সমস্যাটি কাঠামোটি ভুল সুরক্ষা প্রোটোকলটি ব্যবহার করতে পারে - এবং বিঙ্গো, আমার সংযোগগুলি অস্বীকার করা হচ্ছে না, এবং আমি আমার ডেটা পাচ্ছি!
ভিভারকে

7
System.Net.ServicePointManager.SecurityProtocol = ...অনুরোধটি তৈরি করার আগে এটি কার্যকর করতে হবে তা বলা গুরুত্বপূর্ণ ।
টোনতিও

4
target.6.১ এ লক্ষ্য ফ্রেমওয়ার্ক সংস্করণ আপডেটটি আমার জীবন বাঁচিয়েছিল :-)
আয়েস

আমার কাঠামোটি 4.6.2 এ সেট করা হয়েছে। এর পরিবর্তে আমাকে টিএলএস সমাধানটি ব্যবহার করতে হবে
লুমিনাস

আমি 7. sending.২ ফ্রেমওয়ার্কটিও ব্যবহার করছি যা আমি অনুরোধটি পাঠাচ্ছি সে সাইটটি টিএলএস ১.২ ব্যবহার করছে তবে এটির মতো 10 টির 6 টি অনুরোধে আমি এই ত্রুটি পেয়েছি। কোন ধারনা ?
ডেভিট মিকুচাদজে

16

আপনি যদি নেট এর পুরানো সংস্করণটি ব্যবহার করতে চান তবে নিজের পতাকা তৈরি করুন এবং কাস্ট করুন।

    //
    // Summary:
    //     Specifies the security protocols that are supported by the Schannel security
    //     package.
    [Flags]
    private enum MySecurityProtocolType
    {
        //
        // Summary:
        //     Specifies the Secure Socket Layer (SSL) 3.0 security protocol.
        Ssl3 = 48,
        //
        // Summary:
        //     Specifies the Transport Layer Security (TLS) 1.0 security protocol.
        Tls = 192,
        //
        // Summary:
        //     Specifies the Transport Layer Security (TLS) 1.1 security protocol.
        Tls11 = 768,
        //
        // Summary:
        //     Specifies the Transport Layer Security (TLS) 1.2 security protocol.
        Tls12 = 3072
    }
    public Session()
    {
        System.Net.ServicePointManager.SecurityProtocol = (SecurityProtocolType)(MySecurityProtocolType.Tls12 | MySecurityProtocolType.Tls11 | MySecurityProtocolType.Tls);
    }

4
আপনাকে নিজের শ্রেণি ব্যবহার করতে হবে না, আপনি সরাসরি ServicePointManager.SecurityProtocol = (SecurityProtocolType) 48 | (SecurityProtocolType) 192 | (SecurityProtocolType) 768 | (SecurityProtocolType) 3072;
ইয়ান এফ।

13

নীচের কোডটি যুক্ত করা আমাকে সমস্যাটি কাটিয়ে উঠতে সহায়তা করেছে।

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11;

8
using (var client = new HttpClient(handler))
            {
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
                var response = await client.SendAsync(new HttpRequestMessage(HttpMethod.Get, apiEndPoint)).ConfigureAwait(false);
                await response.Content.ReadAsStringAsync().ConfigureAwait(false);
            }

এটি আমার পক্ষে কাজ করেছে


4
সমালোচনামূলক বিটটি নিম্নলিখিত লাইনটি রয়েছে: সার্ভিসপয়েন্টম্যানেজ.সেকিউরিপিট্রোকল = সিকিউরিটিপ্রোটোকল টাইপ.টিএলএস 12 | সিকিউরিটিপ্রোটোকলটাইপ.টিএস 11 | সিকিউরিটিপ্রোটোকলটাইপ.টিএলএস; এই উত্তরটি দুর্দান্ত যদিও এটি দেখায় যে সাধারণ ব্যবহারের ক্ষেত্রে সেই লাইনটি কোথায় ফিট করা উচিত।
নিক পেন্টার

5

ChargifNET.dll ব্যবহার করার সময় আমি একই ত্রুটি বার্তায় চলে এসেছি চার্জিফাই এপিআইয়ের সাথে যোগাযোগ করতে। যুক্ত হচ্ছেchargify.ProtocolType = SecurityProtocolType.Tls12; কনফিগারেশন আমার জন্য সমস্যার সমাধান।

এখানে সম্পূর্ণ কোড স্নিপেট:

public ChargifyConnect GetChargifyConnect()
{
    var chargify = new ChargifyConnect();
    chargify.apiKey = ConfigurationManager.AppSettings["Chargify.apiKey"];
    chargify.Password = ConfigurationManager.AppSettings["Chargify.apiPassword"];
    chargify.URL = ConfigurationManager.AppSettings["Chargify.url"];

    // Without this an error will be thrown.
    chargify.ProtocolType = SecurityProtocolType.Tls12;

    return chargify;
}

2

ভিবি.এনইটি-র জন্য, আপনি আপনার ওয়েব অনুরোধের আগে নিম্নলিখিতগুলি রাখতে পারেন:

Const _Tls12 As SslProtocols = DirectCast(&HC00, SslProtocols)
Const Tls12 As SecurityProtocolType = DirectCast(_Tls12, SecurityProtocolType)
ServicePointManager.SecurityProtocol = Tls12

এটি .NET 3.5 এ আমার সুরক্ষা সমস্যার সমাধান করেছে।


0

এটি আমার সাথে হয়েছিল যখন কোনও ওয়েব অনুরোধের শেষ পয়েন্টটি অন্য সার্ভারে স্যুইচ করা হয়েছিল যা কেবলমাত্র টিএলএস 1.2 অনুরোধগুলি গ্রহণ করে। বেশিরভাগ প্রচেষ্টা চেষ্টা করে বেশিরভাগ স্ট্যাকওভারফ্লোতে পাওয়া যায়

  1. রেজিস্ট্রি কী,
  2. যুক্ত:
    System.Net.ServicePointManager.SecurityProtocol | = সিস্টেম. নেট.সিকিউরিটিপ্রোটোকল টাইপ.টিএস 12; গ্লোবাল.এএসএক্স অন স্টার্টে,
  3. Web.config এ যুক্ত হয়েছে।
  4. নেট ফ্রেমওয়ার্ক 4.7.2 এ আপডেট হয়েছে এখনও একই ব্যতিক্রম পাচ্ছে।

প্রাপ্ত ব্যতিক্রমটি সত্যিকারের সমস্যার মুখোমুখি হয়েছি এবং পরিষেবা অপারেটরের কাছ থেকে কোনও সহায়তা পাইনি to

এটি সমাধান করার জন্য আমাকে একটি নতুন সাইফার স্যুট টিএলএস_ডিএইচ_আরএসএ_ডব্লিউআইটিএইচ_এইএস_256_ জিসিএম_এসএএইচ ৩৮৮ যোগ করতে হবে নীচে দেখানো হিসাবে আমি এখান থেকে আইআইএস ক্রিপ্টো ২.০ সরঞ্জামটি ব্যবহার করেছি ।

এখানে চিত্র বর্ণনা লিখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.