পাওয়ারশেল ইনভোক-ওয়েবরয়েস্ট এসএসএল / টিএলএস সুরক্ষিত চ্যানেলের সাথে ব্যর্থ


252

আমি এই পাওয়ারশেল কমান্ডটি কার্যকর করার চেষ্টা করছি

Invoke-WebRequest -Uri https://apod.nasa.gov/apod/

এবং আমি এই ত্রুটি পেয়েছি। "দাওয়াত-ওয়েব অনুরোধ: অনুরোধটি বাতিল করা হয়েছিল: এসএসএল / টিএলএস সুরক্ষিত চ্যানেল তৈরি করতে পারেনি Could" https র অনুরোধগুলি (" https://google.com ") তে কাজ করার জন্য হাজির তবে প্রশ্নটির মধ্যে এটি নয়। পৃষ্ঠার বিষয়বস্তু পড়তে আমি কীভাবে এটি কাজ করতে বা অন্যান্য পাওয়ারশেল কমান্ডটি ব্যবহার করতে পারি?


উত্তর:


533

এটি ব্যবহার করার চেষ্টা করুন

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Invoke-WebRequest -Uri https://apod.nasa.gov/apod/

48
ডিফল্টভাবে পাওয়ারশেল টিএলএস 1.0 ব্যবহার করে সাইটের সুরক্ষার জন্য টিএলএস 1.2 প্রয়োজন
চন্দন রাই

3
হ্যাঁ, আপনি কীভাবে সাইটের টিএলএস সংস্করণটি নির্ধারণ করলেন?
হিউস্টোন

16
তথ্য নির্ধারণের জন্য এসএসএলএলগুলি চেষ্টা করুন: এসএসএল প্রতিবেদন: apod.nasa.gov টিএলএস 1.1 এবং টিএলএস 1.2 দেখায়
ক্রিস্টোফার জি লুইস

1
এটি করার আরও কিছু উপায় আছে যা কিছুটা স্থায়ী হয়? এটি কাজ করে তবে প্রতিটি কনসোল উইন্ডোতে রিসেট করে মনে হচ্ছে।
ব্র্যান্ডন 21

3
@ ব্র্যান্ডন এটিকে পরিবর্তন করুন $env:Profileবা আরও ভাল, রেজিস্ট্রি টেবিলটি সম্পাদনা করুন
ফ্রাঙ্কলিন ইউ

166

কিছু ভোট চুরি করার নির্লজ্জ প্রয়াসে, এটি বৈশিষ্ট্যের সাথে SecurityProtocolএকটি । সুতরাং আপনি এটি করতে পারেন:Enum[Flags]

[Net.ServicePointManager]::SecurityProtocol = 
  [Net.SecurityProtocolType]::Tls12 -bor `
  [Net.SecurityProtocolType]::Tls11 -bor `
  [Net.SecurityProtocolType]::Tls

বা যেহেতু এটি পাওয়ারশেল, আপনি এটি আপনার জন্য একটি স্ট্রিং পার্স করতে পারেন:

[Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls"

তারপরে আপনার প্রযুক্তিগতভাবে টিএলএস সংস্করণটি জানা দরকার নেই।

আমি এই উত্তরটি পড়ার পরে তৈরি করা একটি স্ক্রিপ্ট থেকে এটিকে অনুলিপি করে আটকিয়েছি কারণ আমি যে সমস্ত কাজ করে সেগুলি খুঁজে পেতে সমস্ত উপলভ্য প্রোটোকল ঘুরে ঘুরে দেখতে চাই না। আপনি চাইলে অবশ্যই তা করতে পারতেন

চূড়ান্ত দ্রষ্টব্য - আমার পাওয়ারশেল প্রোফাইলে আমার আসল (বিয়োগ এসও সম্পাদনা) বিবৃতি রয়েছে তাই এটি এখনই শুরু হওয়া প্রতিটি সেশনে। এটি সম্পূর্ণরূপে নির্বোধ নয় কারণ এখনও কিছু সাইট রয়েছে যা কেবলমাত্র ব্যর্থ হয় তবে আমি অবশ্যই বার বার প্রশ্নের বার্তাটি খুব কম ঘন ঘন দেখতে পাচ্ছি।


7
আপনার যদি SSLv3 ব্যবহার করে এমন কোনও সাইটে অ্যাক্সেসের প্রয়োজন হয় তবে আপনি চাইবেন [Net.ServicePointManager]::SecurityProtocol = "Tls12, Tls11, Tls, Ssl3"। মনে রাখবেন যে SSLV3 এবং TLSv1.0 পুডলের কারণে অবহেলা করা হয়েছে, সুতরাং আপনার নিজের ঝুঁকিতে ব্যবহার করুন।
jordanbtucker

সমস্ত নেট.সিকিউরিটিপ্রোটোকল টাইপ ধরণের অনুমতি দেওয়ার জন্য প্রতিচ্ছবি ব্যবহার করার কোন উপায় নেই? সেখানে থাকতে হবে
red888

আপনি ডিফল্টরূপে জ্ঞাত-ত্রুটিযুক্ত প্রোটোকলগুলিকে অ্যাক্সেসের অনুমতি দিতে চান কেন? নির্বিশেষে, আমি বিশ্বাস করি পাওয়ারশেল ভি 7-এর আসন্ন (এই লেখার মতো) প্রকাশটি এই সমস্যাটিকে একবার এবং সকলের জন্য সমাধান করবে এবং এই প্রশ্নটি ধীরে ধীরে এর ন্যায়সঙ্গত এবং উপার্জিত বিস্মরণে পরিণত হবে।
শে

2

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

[Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls"
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -bor [Net.SecurityProtocolType]::Tls11 -bor [Net.SecurityProtocolType]::Tls

শেষ পর্যন্ত, এটি তখনই হয়েছিল যখন আমি টিএলএস 1.0 কে লক্ষ্য করেছিলাম (কোডটিতে বিশেষত 1.1 এবং 1.2 মুছুন) এটি কাজ করেছিল:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls

স্থানীয় সার্ভারটি (এটিতে চেষ্টা করা হচ্ছে) টিএলএস ১.২ এর সাথে ঠিক আছে, যদিও রিমোট সার্ভারটি (যা তৃতীয় পক্ষের দ্বারা টিএলএস ১.২ এর জন্য আগে "নিশ্চিত" ছিল) বলে মনে হয় না seems

আশা করি এটি কাউকে সাহায্য করবে।


1

এটা আমার জন্য কাজ করে...

if (-not ([System.Management.Automation.PSTypeName]'ServerCertificateValidationCallback').Type)
    {
    $certCallback = @"
        using System;
        using System.Net;
        using System.Net.Security;
        using System.Security.Cryptography.X509Certificates;
        public class ServerCertificateValidationCallback
        {
            public static void Ignore()
            {
                if(ServicePointManager.ServerCertificateValidationCallback ==null)
                {
                    ServicePointManager.ServerCertificateValidationCallback += 
                        delegate
                        (
                            Object obj, 
                            X509Certificate certificate, 
                            X509Chain chain, 
                            SslPolicyErrors errors
                        )
                        {
                            return true;
                        };
                }
            }
        }
    "@
        Add-Type $certCallback
     }
    [ServerCertificateValidationCallback]::Ignore()

Invoke-WebRequest -Uri https://apod.nasa.gov/apod/

1
এই উত্তরটি কার্যকরভাবে সুরক্ষা চেকিং অক্ষম করে। যদিও এটি ত্রুটিটি দূর করতে পারে এটি আপনার ডিভাইসের আক্রমণ পৃষ্ঠটি এমন উপায়ে খুলবে যাতে অনেকে অগ্রহণযোগ্য বলে বিবেচনা করবেন। আমি নিজের মালিকানাধীন কোনও ডিভাইসে এটি কখনই ব্যবহার করব না।
কোনও রিফান্ড নেই কোনও রিটার্নস নেই

1

আপনি প্রথমে শেলটি স্যুইচ করেছেন তা নিশ্চিত করুন:

SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]

RUN [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 
RUN Invoke-WebRequest -UseBasicParsing -Uri  'https://github.com/git-for-windows/git/releases/download/v2.25.1.windows.1/Git-2.25.1-64-bit.exe' -OutFile 'outfile.exe'

0

আমি কারণটি খুঁজে পাইনি তবে .pfxশংসাপত্রটি পুনরায় ইনস্টল করা (বর্তমান ব্যবহারকারী এবং স্থানীয় মেশিনে উভয়ই) আমার পক্ষে কাজ করে।


কোন .pfx আপনি পুনরায় ইনস্টল করেছেন?
কোনও ফেরত পাওয়া যাবে না

@ NoRefundsNoReturns আপনি যে অনুরোধটি প্রেরণ করতে ব্যবহার করতে চান তা শংসাপত্রের ফাইল।
স্পেনসার

এটি এখনও প্রশ্নের সাথে কীভাবে প্রযোজ্য তা আমি এখনও পরিষ্কার করছি না।
কোনও রিফান্ড নেই কোনও ফেরত নয়

@ NoRefundsNoReturns আমি যখন Invoke-WebRequestস্থানীয়ভাবে থাকি তবে এটি প্রথমে কাজ করে তবে পরে ব্যর্থ হবে। দেখে মনে হয় যে কখনও কখনও এটি শংসাপত্রটি আর পড়তে পারে না (আমি এর পিছনের প্রক্রিয়াটি জানি না Maybe এটি সম্ভবত সংস্থাটি দ্বারা নিয়ন্ত্রিত একটি সেটিংস)। তবে শংসাপত্র পুনরায় ইনস্টল করা এক্ষেত্রে কাজ করে।
স্পেন্সার

আপনি যদি এমন কোনও শংসাপত্রের জন্য ব্যক্তিগত কী হারিয়ে ফেলেন যা অবশ্যই এই শংসাপত্রটিকে ব্যবহারযোগ্য করে তুলতে পারে তবে আমি সন্দেহ করি এখানেই সমস্যা। যদি আপনি কীটি হারাচ্ছেন, তবে আপনাকে অবশ্যই নিশ্চিত করতে হবে যে আপনি ব্যক্তিগত কীটি সংরক্ষণ করছেন এবং এটিকে অবিচ্ছিন্নভাবে চিহ্নিত করছেন। এটি কি ঘটছে তা যদি একটি নতুন প্রশ্ন জিজ্ঞাসা করুন।
কোনও রিফান্ড নেই কোনও রিটার্নস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.