কেন উইন্ডোজে সিআরএল সঠিকভাবে একটি শংসাপত্র যাচাই করতে পারে না?


30

আমি যখন উইন্ডোতে কার্ল ব্যবহার করার চেষ্টা করি তখন একটি httpsইউআরএল পুনরুদ্ধার করার জন্য , আমি ভয়ঙ্কর "সংযোগ ত্রুটি (60) পাই"।

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

সঠিক ত্রুটি বার্তাটি হ'ল:

কার্ল: (60) এসএসএল শংসাপত্রের সমস্যা, সিএ সার্টটি ঠিক আছে কিনা তা যাচাই করুন। বিশদ:
ত্রুটি: 14090086: এসএসএল রুটিনগুলি: SSL3_GET_SERVER_CERTIFICATE: শংসাপত্র যাচাইকরণ ব্যর্থ হয়েছে
আরও বিশদ এখানে: http://curl.haxx.se/docs/sslcerts.html

কিভাবে সমাধান করবেন?


এসইউ শিরোনামে "সমস্যা" শব্দটি পছন্দ করে না কারণ এটি বর্ণনামূলক নয়। যদি আপনি "সমস্যা" শব্দটি না করে আপনার শিরোনামটিকে পুনরায় বাক্য বানানোর উপায় বের করতে না পারেন তবে আপনি যথেষ্ট চেষ্টা করছেন না। :)
গ্যারেট

1
এটি আমি যে বার্তাটি সম্পর্কে জিজ্ঞাসা করছি তার একটি সঠিক উদ্ধৃতি। আমি এই শব্দটি সরিয়ে দেওয়ার চেষ্টা করতে চাই না, অনুসন্ধান সূচীকরণের জন্য এটি একটি গুরুত্বপূর্ণ।
চিজো

@ শেইসো: পোস্ট সামগ্রীর পাশাপাশি সূচী তৈরি করা হবে, আপনার প্রশ্নের সন্ধানকারী কেউ শিরোনামের নীচে বর্ণনায় এটি দেখতে পাবে।
তমারা উইজসম্যান

উত্তর:


36

কেন জানি না তবে আমি এই তথ্যগুলি এক জায়গায় খুঁজে পাইনি।

  1. কার্লের এসএসএল-সচেতন সংস্করণটি ডাউনলোড করুন, বা এসএসএল-সচেতন সংস্করণটি নিজেই তৈরি করুন।

  2. Http://curl.haxx.se/docs/caextract.html থেকে , cacert.pem ফাইলটি ডাউনলোড করুন।

  3. Curl.exe এবং .pem ফাইল একই ডিরেক্টরিতে রাখুন।

  4. এতে cacert.pemফাইলটির নাম পরিবর্তন করুনcurl-ca-bundle.crt

  5. কার্ল.এক্সে পুনরায় রান করুন!


সম্পাদনা করুন:

সমস্যা সমাধানের অন্যান্য উপায় রয়েছে। এই বিশেষ উপায়ে কার্ল প্রস্তুতকারকের দ্বারা উত্পাদিত একটি ক্যাসর্টের উপর নির্ভর করে। এটি আপনি যা চান তা নাও হতে পারে এবং বিশেষত, এসএসএল সাইটের দ্বারা ব্যবহৃত শংসাপত্রের জন্য আপনার কাছে স্বল্প-সুপরিচিত প্রমাণীকরণ কর্তৃপক্ষ (যেমন কেবল আপনার কর্পোরেশনের কাছে পরিচিত একটি কর্তৃপক্ষ) রয়েছে এমন ক্ষেত্রে এটি কাজ করতে পারে না for । সেক্ষেত্রে আপনি নিজের curl-ca-bundle.crtফাইলটি তৈরি করতে চাইবেন । আইই / উইন্ডোজ স্টোর থেকে এই জাতীয় শংসাপত্র রপ্তানি করতে আপনি যথাক্রমে certreq.exe এবং openssl.exe ব্যবহার করতে পারেন, এবং তারপরে যথাক্রমে রূপান্তর-থেকে-পেম-ফর্ম্যাটটি রূপান্তর করতে পারেন।


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

এটা খুশী হয়েছে।
চিজো

এটিকে কার্ল-সিএ-বান্ডেল সিআরটি নামকরণের কী লাভ? এটি কি উইন্ডোজ নির্দিষ্ট?
নওফাল

ধন্যবাদ! আমি উইন্ডোজ on তে curlচিহ্নিত চিহ্নিত ব্যবহার করছিলাম WinSSLডকুমেন্টেশন লিঙ্ক অনুসারে, চিহ্নিত সংস্করণগুলিতে কেবল সিস্টেমের শংসাপত্রগুলি ব্যবহার করে কাজ করা উচিত। যাইহোক, আমি আপনার সমাধান অনুসরণ না করা পর্যন্ত ত্রুটিটি পেয়েছিলাম।
জর্জ

তবে, যদি শেষ ব্যবহারকারীর প্রশাসক পুনরায় কাজ না করে থাকে তবে তারা সিস্টেমে অন্তর্ভুক্ত ফোল্ডারে নতুন শংসাপত্রটি রাখতে পারবে না। বিকল্পভাবে, ব্যবহারকারী পরিবেশ পরিবর্তনশীল ব্যবহার করতে পারেন set CURL_CA_BUNDLE=<path to crt>। শিউর করুন ফাইলটির ফর্ম্যাটটি যথাযথ। এই পদ্ধতিটি আপনার একাধিক curlইনস্টলেশন, যেমন গিট, ভিজাগর ... এমনকি কার্যকর হবে যদি ...
অ্যারন সি

6

আমি একটি পাওয়ারশেল স্ক্রিপ্ট তৈরি করেছি যা ca-cert.crtআপনার উইন্ডোজ শংসাপত্রের স্টোর (কারেন্টইজার বা লোকালম্যাচিন) এ ইনস্টল করা সিএ শংসাপত্রের উপর ভিত্তি করে ফাইলটি লিখতে সক্ষম । স্ক্রিপ্টটি এভাবে চালান:

CreateCaCert.ps1 -StoreLocation CurrentUser | Out-File -Encoding utf8 curl-ca-cert.crt

এটি সেই curl-ca-cert.crtফাইলটি তৈরি করবে যা একই ডিরেক্টরিতে সংরক্ষণ করা curl.exeউচিত এবং আপনার উইন্ডোজ অ্যাপ্লিকেশনগুলিতে আপনি যেমন করতে পারেন তেমন সাইটগুলি যাচাই করতে সক্ষম হবেন (নোট করুন যে এই ফাইলটিও গ্রাহ্য হতে পারে git)।

"অফিসিয়াল" স্ক্রিপ্টটি গিটহাবে পাওয়া যাবে , তবে প্রাথমিক সংস্করণটি এখানে রেফারেন্সের জন্য তালিকাভুক্ত করা হয়েছে:

[CmdletBinding()]
Param(
    [ValidateSet(
        [System.Security.Cryptography.X509Certificates.StoreLocation]::CurrentUser,
        [System.Security.Cryptography.X509Certificates.StoreLocation]::LocalMachine)]
    [string]
    $StoreLocation = [System.Security.Cryptography.X509Certificates.StoreLocation]::CurrentUser
)

$maxLineLength = 77

# Open the store
$store = New-Object System.Security.Cryptography.X509Certificates.X509Store ([System.Security.Cryptography.X509Certificates.StoreName]::AuthRoot, $StoreLocation)
$store.Open([System.Security.Cryptography.X509Certificates.OpenFlags]::ReadOnly);

# Write header
Write-Output "# Root certificates ($StoreLocation) generated at $(Get-Date)"

# Write all certificates
Foreach ($certificate in $store.Certificates)
{
    # Start with an empty line
    Write-Output ""

    # Convert the certificate to a BASE64 encoded string
    $certString = [Convert]::ToBase64String($certificate.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Cert));

    # Write the actual certificate
    Write-Output "# Friendly name: $($certificate.FriendlyName)"
    Write-Output "# Issuer:        $($certificate.Issuer)"
    Write-Output "# Expiration:    $($certificate.GetExpirationDateString())"
    Write-Output "# Serial:        $($certificate.SerialNumber)"
    Write-Output "# Thumbprint:    $($certificate.Thumbprint)"
    Write-Output "-----BEGIN CERTIFICATE-----"
    For ($i = 0; $i -lt $certString.Length; $i += $maxLineLength)
    {
        Write-Output $certString.Substring($i, [Math]::Min($maxLineLength, $certString.Length - $i))
    }
    Write-Output "-----END CERTIFICATE-----"
}

2

আসলে টাইফিয়াস / রুবিতে আমাদের একই সমস্যা ছিল। সলিউশন cacert.pem ডাউনলোড করে এটিকে সি: \ উইন্ডোজ \ সিস্টেম 32 (বা আপনার উইন্ডোজ যেখানেই হোক) সংরক্ষণ করুন। তারপরে আমরা এখানে বিশ্বব্যাপী পরিবেশের পরিবর্তনশীল স্থির করেছিলাম যেমন এখানে "ভেরিয়েবল নাম" হওয়া আবশ্যক CURL_CA_BUNDLEএবং "ভেরিয়েবল মান" ফাইলের পথে %SystemRoot%\System32\cacert.pem

একটি নতুন সিএমডি সেশন শুরু করার সময় আপনি কেবল এসএসএল সংযোগগুলি প্রমাণীকরণের জন্য টাইফিয়াস / লিবার্কল জিনিসটি ব্যবহার করতে পারেন। আমি উইন্ডোজ 8.1 এর সাথে এটি সফলভাবে চেষ্টা করেছি।

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