নেট থেকে ওয়েব পরিষেবাগুলিতে কল করার সময় অবৈধ এসএসএল শংসাপত্রের ত্রুটিগুলি বাইপাস করুন


88

আমরা একটি নতুন শেয়ারপয়েন্ট সেটআপ করছি যার জন্য আমাদের কাছে এখনও কোনও বৈধ SSL শংসাপত্র নেই। সেটআপ সম্পর্কে কিছু মেটা ডেটা উদ্ধার করার জন্য আমি এটিতে তালিকাভুক্ত ওয়েব পরিষেবাটিতে কল করতে চাই। যাইহোক, আমি যখন এটি করার চেষ্টা করি তখন আমি ব্যতিক্রম পাই:

অন্তর্নিহিত সংযোগটি বন্ধ ছিল: এসএসএল / টিএলএস সুরক্ষিত চ্যানেলের জন্য বিশ্বাসের সম্পর্ক স্থাপন করতে পারেনি।

নেস্টেড ব্যতিক্রমটিতে ত্রুটি বার্তা রয়েছে:

রিমোট শংসাপত্র বৈধকরণ পদ্ধতি অনুসারে অবৈধ।

এটি সঠিক কারণ আমরা একটি অস্থায়ী শংসাপত্র ব্যবহার করছি This

আমার প্রশ্নটি: আমি কীভাবে নেট নেট সার্ভিস ক্লায়েন্টকে ( সোপএইচটিটিপিপ্লায়েন্টপ্রোটোকল ) এই ত্রুটিগুলি উপেক্ষা করতে পারি?

উত্তর:


18

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

আমি সাধারণত সিসিআরটি দিয়ে তৈরি শংসাপত্রগুলির সাথে টেস্টিং করি এবং এগুলি আমার বিশ্বস্ত কর্তৃপক্ষের তালিকায় যুক্ত করে সাঁতার কাটতে কাজ করি।

এটি এইভাবে করা মানে আপনার অ্যাপ্লিকেশনটিতে আপনাকে কোনও কাস্টম কোড যুক্ত করতে হবে না এবং এটি যথাযথভাবে অনুকরণ করে যে যখন আপনার অ্যাপ্লিকেশন স্থাপন করা হবে তখন কী ঘটবে। যেমনটি, আমি মনে করি এটি প্রোগ্রামিয়ালি চেক বন্ধ করার জন্য এটি সর্বোত্তম সমাধান।


এটি আমার প্রথম ধারণাও ছিল। দুর্ভাগ্যক্রমে শংসাপত্রের মেয়াদও শেষ হয়ে গেছে, সুতরাং এটি বিশ্বাস করা অসম্ভব।
jan.vdbergh

সিএ সার্টের মতো কাউকে ব্যবহার করতে না পারার কোনও কারণ আছে কি? যদি এটি একটি পরীক্ষার সার্ট হয় তবে আপনি কেবল এটির সাথে এগিয়ে যেতে পারেন। আমি নিশ্চিত নই যে এই চেকগুলি বন্ধ করার কোনও উপায় আছে কিনা!
সাইমন জনসন

113

বিকল্পভাবে আপনি একটি কল ব্যাক প্রতিনিধি যা শংসাপত্রের ত্রুটি উপেক্ষা করে নিবন্ধন করতে পারেন:

...
ServicePointManager.ServerCertificateValidationCallback = MyCertHandler;
...

static bool MyCertHandler(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors error)
{
// Ignore errors
return true;
}

4
আমি এই স্থিতিশীল পদ্ধতিটি Global.asax এ যুক্ত করেছি এবং ইভেন্টটিকে "অনপ্লিকেশন স্টার্ট" এ সেট করেছি। একটি কবজ মত কাজ। ধন্যবাদ
হুয়ান জামোড়া

4
@ জুয়ানজামোড়া আপনিও একই কাজ করেছিলেন। এটা কাজ করেছে!
শচীন বিআর

4
আপনাকে "মিডল ইন দ্য মিডল" আক্রমণটির পক্ষে অশ্লীল হতে চাইলে আপনার যা করতে হবে তা হ'ল ...
হাউটম্যান

4
আদর্শভাবে আপনার কেবল এটি একটি উন্নয়ন পরিবেশে করা উচিত।
রন ডিফ্রিটাস

79

জেসন এস এর উত্তর মত:

ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

আমি এটিকে আমার মেইন এ রেখেছি app.configএবং (ConfigurationManager.AppSettings["IgnoreSSLCertificates"] == "True")কোডটির লাইনটি কল করার আগে আমার এবং পরীক্ষার দিকে তাকান ।


24

আমি এটি এইভাবে সমাধান করেছি:

আপনার এসএসএল ওয়েব সার্ভিসকে কল করার ঠিক আগে নিম্নলিখিতটি কল করুন যা এই ত্রুটির কারণ ঘটায়:

using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;

/// <summary>
/// solution for exception
/// System.Net.WebException: 
/// The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. ---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.
/// </summary>
public static void BypassCertificateError()
{
    ServicePointManager.ServerCertificateValidationCallback +=

        delegate(
            Object sender1,
            X509Certificate certificate,
            X509Chain chain,
            SslPolicyErrors sslPolicyErrors)
        {
            return true;
        };
}

12

ডাউনলোডস্ট্রিং ব্যবহার করে আমার একই ত্রুটি হয়েছিল; এবং এই পৃষ্ঠায় পরামর্শ সহ এটি নীচের মতো কাজ করতে সক্ষম হয়েছিল

System.Net.WebClient client = new System.Net.WebClient();            
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
string sHttpResonse = client.DownloadString(sUrl);

3
ServicePointManager.ServerCertificateValidationCallback +=
            (mender, certificate, chain, sslPolicyErrors) => true;

চালান এসএসএল বাইপাস করা হবে। আপনার ওয়েব পরিষেবা নির্মাতাকে এটি লিখুন।


1

নবাবিদের জন্য, আপনি একটি পৃথক সিএস ফাইলে আপনার আংশিক পরিষেবা শ্রেণি প্রসারিত করতে পারেন এবং এটি সংহত করতে "imanabidi" দ্বারা সরবরাহিত কোড যুক্ত করতে পারেন


1

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

আপনার কোনও ধরণের স্ব-স্বাক্ষরিত শংসাপত্রের প্রয়োজন হবে। আপনি যদি আইআইএস এক্সপ্রেস ব্যবহার করে থাকেন তবে এর মধ্যে একটি ইতিমধ্যে আপনার কাছে রয়েছে, আপনাকে এটি সন্ধান করতে হবে। ফায়ারফক্স বা আপনার পছন্দমতো ব্রাউজারটি খুলুন এবং আপনার ডেভ ওয়েবসাইটে যান। আপনি ইউআরএল বার থেকে শংসাপত্রের তথ্য দেখতে সক্ষম হবেন এবং আপনার ব্রাউজারের উপর নির্ভর করে আপনার কোনও ফাইলের শংসাপত্রটি রফতানি করতে সক্ষম হওয়া উচিত।

এরপরে, MMC.exe খুলুন এবং শংসাপত্রের স্ন্যাপ-ইন যুক্ত করুন। বিশ্বস্ত রুট শংসাপত্র কর্তৃপক্ষের দোকানে আপনার শংসাপত্রের ফাইলটি আমদানি করুন এবং এটিই আপনার প্রয়োজন। এটি সেই স্টোরটিতে যায় এবং 'ব্যক্তিগত' এর মতো অন্য কোনও দোকানে নয় তা নিশ্চিত করা গুরুত্বপূর্ণ। আপনি যদি এমএমসি বা শংসাপত্রগুলির সাথে অপরিচিত হন তবে কীভাবে এটি করবেন সেই তথ্য সহ অসংখ্য ওয়েবসাইট রয়েছে।

এখন, সম্পূর্ণরূপে আপনার কম্পিউটারই স্বতঃস্ফূর্তভাবে কোনও শংসাপত্রের উপর নির্ভর করবে যা এটি নিজেই তৈরি করেছে এবং এটি বিশেষভাবে পরিচালনা করার জন্য আপনার কোড যুক্ত করার দরকার নেই। আপনি যখন প্রোডাকশনে চলে যান এটি কাজ চালিয়ে যাবে যখন আপনি সেখানে যথাযথ বৈধ শংসাপত্র ইনস্টল করে থাকেন। প্রোডাকশন সার্ভারে এটি করবেন না - এটি খারাপ হবে এবং এটি সার্ভারে থাকা অন্য কোনও ক্লায়েন্টের পক্ষে কাজ করবে না।

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