Cygwin में HTTPS URL पर wget चलाने के दौरान मैं प्रमाणपत्र की त्रुटियों को कैसे ठीक करूं?


164

उदाहरण के लिए, wget https://www.dropbox.comनिम्नलिखित त्रुटियों में परिणाम:

ERROR: The certificate of `www.dropbox.com' is not trusted.
ERROR: The certificate of `www.dropbox.com' hasn't got a known issuer.

जवाबों:


131

यहाँ में वर्तमान हैकी समाधानों को देखते हुए, मुझे लगता है कि मुझे आखिरकार एक उचित समाधान का वर्णन करना होगा।

सबसे पहले, आपको ca-certificatesप्रमाणपत्र प्राप्त करने के लिए Cygwin के setup.exe के माध्यम से साइबरविन पैकेज स्थापित करने की आवश्यकता है ।

प्रमाणपत्र डाउनलोड करने के लिए कर्ल या समान हैक्स का उपयोग न करें (पड़ोसी की सलाह के अनुसार) क्योंकि यह बुनियादी रूप से असुरक्षित है और सिस्टम से समझौता कर सकता है।

दूसरा, आपको यह बताने की आवश्यकता है कि आपके प्रमाणपत्र कहां हैं, क्योंकि यह उन्हें साइगविन वातावरण में डिफ़ॉल्ट रूप से नहीं लेता है। आप कमांड लाइन पैरामीटर के साथ या तो ऐसा कर सकते हैं तो --ca-directory=/usr/ssl/certsया जोड़कर (शेल पटकथा के लिए सबसे अच्छा) ca_directory = /usr/ssl/certsके लिए ~/.wgetrcफ़ाइल।

आप इसे ln -sT /usr/ssl /etc/sslकिसी अन्य उत्तर में बताए अनुसार भी ठीक कर सकते हैं , लेकिन यह तभी काम करेगा जब आपके पास सिस्टम तक प्रशासनिक पहुंच हो। मेरे द्वारा बताए गए अन्य समाधानों की आवश्यकता नहीं है।


5
इस उत्तर के लिए धन्यवाद, और विशेष रूप से ~ / .wgetrc फ़ाइल के बारे में अनुस्मारक के लिए। एक MacPorts उपयोगकर्ता के रूप में, मेरे सेरेस / ऑप्ट / लोकल / आदि / ओपनएसएल में स्थित हैं, एक ऐसा तथ्य जो मुझे आशा है कि किसी को काम मिल जाएगा।
ब्रायस एंडरसन

3
और फ़िंक के लिए, वे /sw/etc/ssl/certs/ca-bundle.crt में हैं जो ca-bundleपैकेज के हिस्से के रूप में आता है - जैसा कि यहाँ वर्णित है
jhfrontz

यकीन नहीं है कि यह एक टाइपो है, लेकिन ln -s /etc/ssl /usr/sslमेरे लिए काम किया है।
zkent

240

यदि आप प्रमाणपत्र की वैधता की जांच करने से गुरेज नहीं करते हैं, तो केवल --no-check-certificateकमांड कमांड लाइन पर विकल्प जोड़ें । इसने मेरे लिए अच्छा काम किया।

नोट: यह आपको मैन-इन-द-मिडिल (मिटम) हमलों के लिए खोलता है, और ऐसी किसी भी चीज़ के लिए अनुशंसित नहीं है जहाँ आप सुरक्षा के बारे में परवाह करते हैं।


1
इसने मेरे लिए काम किया। प्रमाणपत्रों को स्थापित करने और अद्यतन करने के बारे में अन्य समाधानों ने इसे हल नहीं किया। मेरे विशेष मामले में सुरक्षा संबंधी चिंताएँ नहीं हैं।
marlar

103

यदि समस्या यह है कि एक ज्ञात रूट CA गायब है और जब आप ubuntu या debian का उपयोग कर रहे हैं, तो आप इस एक पंक्ति के साथ समस्या को हल कर सकते हैं:

sudo apt-get install ca-certificates

1
apt-get cygwin पर है? apt-get redgat पर है? ;)
डेनिस चेनू

5
मेरे कंप्यूटर में सीए-सर्टिफिकेट पहले से इंस्टॉल थे। रनिंग update-ca-certificatesसे समस्या हल हो गई।
टॉमस फॉक्स

इसने डेबियन चेरोट के साथ मेरी Synology DS215j पर भी काम किया।
माइक्रोस्पिनो

@fox update-ca-certificatesएक ubuntu कमांड है, जो डेबियन में उपलब्ध नहीं है।
16:22

@Devy यह वास्तव में मेरे रास्पबेरी पाई पर काम कर रहा था जो डेबियन मट्ठा चला रहा था
लुइस लोबो बोरोबिया

13

सबसे पहले, SSL प्रमाणपत्र स्थापित करने की आवश्यकता है। निर्देश ( https://stackoverflow.com/a/4454754/278488 पर आधारित ):

pushd /usr/ssl/certs
curl http://curl.haxx.se/ca/cacert.pem | awk 'split_after==1{n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}'
c_rehash

ऊपर ठीक करने के लिए पर्याप्त है curl, लेकिन इसके wgetलिए एक अतिरिक्त सिमिलिंक की आवश्यकता होती है:

ln -sT /usr/ssl /etc/ssl

6
क्या यह बेतरतीब वेब साइट से रूट प्रमाणपत्र अधिकारियों को स्थापित करने के लिए असुरक्षित नहीं है, विशेष रूप से नाम में haxx के साथ?
च्लोए

6
@Chloe curl.haxx.se जो कि cURL का देव स्थल है। बहुत भरोसेमंद लोग।
यूलुनेट

आप इसे बिना कर्ल के कैसे ठीक करेंगे?
निशान लता

1
सिम्फिन को छोड़ दें जो मैंने याद किया था ... 1 लाइनर फिक्स के लिए 30min की खोज की थी> <
पॉपुलस

4
यह कई स्तरों पर हैकी है। सबसे पहले, आपको प्रमाणपत्रों को मैन्युअल रूप से डाउनलोड करने की आवश्यकता नहीं है क्योंकि "कै-सर्टिफिकेट" नामक एक सिगविन पैकेज है। दूसरा, सहानुभूति केवल तभी काम करेगी जब आपके पास सिस्टम तक प्रशासनिक पहुंच हो या आपने केवल अपने उपयोगकर्ता खाते के लिए साइबरविन स्थापित किया हो, जो हमेशा ऐसा नहीं होता है, इसलिए कोड विश्वसनीय नहीं है।
शनात्सेल

10

हो सकता है इससे मदद मिलेगी:

wget --no-check-certificate https://blah-blah.tld/path/filename

1
एक और: यह स्थिति तब भी संभव है जब आप कास्परस्की एंटीवायरस या उसी सॉफ्ट का उपयोग कर रहे हैं (डिफ़ॉल्ट रूप से यह साइट के सामान्य सत्यापित एसएसएल प्रमाणपत्र को उनके स्वयं के स्थान पर बदल रहा है) - इसलिए, आप एंटीवायरस सॉफ्ट में SSL ट्रैफ़िक की जाँच कर सकते हैं।
एलेक्सी सोलोविएव

4
apt-get install ca-certificates 

sफर्क नहीं पड़ता;)


इसमें कोई apt-getसाइबरइन नहीं है, इसलिए यह काम नहीं करता है।
jlh

1

मेरे पास भी ऐसी ही समस्या है और इसे मेरे एंटीवायरस (अस्थायी रूप से 18.0.0.405 कैसपर्सकी) को अक्षम करके इसे ठीक किया गया है। इस AV में HTTPS इंटरसेप्शन मॉड्यूल है जो HTTPS प्रतिक्रियाओं में पाए जाने वाले सभी प्रमाणपत्रों को स्वचालित रूप से स्व-हस्ताक्षरित करता है।

Cygwin के Wget को ए वी रूट प्रमाणपत्र के बारे में कुछ भी नहीं पता है, इसलिए जब यह पता चलता है कि वेबसाइट के प्रमाण पत्र पर गैर विश्वास प्रमाण पत्र के साथ हस्ताक्षर किया गया था तो यह उस त्रुटि को प्रिंट करता है।

AV को अक्षम किए बिना इसे स्थायी रूप से ठीक करने के लिए, आपको /etc/pki/ca-trust/source/anchors.pem फ़ाइल (base64) के रूप में AV प्रमाणपत्र को Windows प्रमाणपत्र संग्रह से कॉपी करना चाहिए और चलाना चाहिएupdate-ca-trust



-4

यदि आप विंडोज़ का उपयोग कर रहे हैं तो बस कंट्रोल पैनल पर जाएं, स्वचालित अपडेट पर क्लिक करें फिर विंडोज अपडेट वेब साइट लिंक पर क्लिक करें। बस स्टेप फॉलो करें। कम से कम मेरे लिए यह काम करता है, कोई और प्रमाण पत्र जारी नहीं करता है अर्थात जब भी मैं पहले की तरह https://www.dropbox.com पर जाता हूं ।


यह Cygwin
Synthead
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.