TLDR:
hostname=XXX
port=443
trust_cert_file_location=`curl-config --ca`
sudo bash -c "echo -n | openssl s_client -showcerts -connect $hostname:$port -servername $hostname \
2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' \
>> $trust_cert_file_location"
लंबा जवाब
मूल कारण यह है कि आपका कंप्यूटर उस सर्टिफिकेट अथॉरिटी पर भरोसा नहीं करता है , जिसने Gitlab सर्वर पर इस्तेमाल किए गए सर्टिफिकेट पर हस्ताक्षर किए हैं । इसका मतलब यह नहीं है कि प्रमाणपत्र संदेहास्पद है, लेकिन यह किसी संस्था / कंपनी द्वारा स्व-हस्ताक्षरित या हस्ताक्षरित किया जा सकता है जो आपके ओएस की सीए की सूची में नहीं है। आपके कंप्यूटर पर समस्या को दरकिनार करने के लिए आपको क्या करना है यह उस प्रमाणपत्र पर भरोसा करने के लिए कह रहा है - अगर आपके पास इसके बारे में संदेह करने का कोई कारण नहीं है।
आपको अपने gitLab सर्वर के लिए उपयोग किए जाने वाले वेब प्रमाणपत्र की जांच करने की आवश्यकता है, और इसे अपने साथ जोड़ें </git_installation_folder>/bin/curl-ca-bundle.crt
।
यह जांचने के लिए कि कम से कम क्लोन ने कहा कि प्रमाण पत्र की जांच के बिना , आप सेट कर सकते हैं:
export GIT_SSL_NO_VERIFY=1
#or
git config --global http.sslverify false
लेकिन यह केवल परीक्षण के लिए होगा, जैसा कि " एसएसएल ब्राउज़र, विगेट और कर्ल के साथ काम करता है, लेकिन जीआईटी के साथ विफल रहता है " या इस ब्लॉग पोस्ट में सचित्र है ।
अपनी GitLab सेटिंग्स की जाँच करें, अंक 4272 में ।
वह प्रमाणपत्र प्राप्त करने के लिए (जिसमें आपको अपनी curl-ca-bundle.crt
फ़ाइल में जोड़ना होगा ), टाइप करें:
echo -n | openssl s_client -showcerts -connect yourserver.com:YourHttpsGitlabPort \
2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
(' yourserver.com
' आपके GitLab सर्वर का नाम होने के साथ , और YourHttpsGitlabPort
आमतौर पर https पोर्ट है 443
)
CA (प्रमाणपत्र प्राधिकरण जारीकर्ता) की जाँच करने के लिए, एक टाइप करें:
echo -n | openssl s_client -showcerts -connect yourserver.com:YourHttpsGilabPort \
2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' \
| openssl x509 -noout -text | grep "CA Issuers" | head -1
नोट: वेलेरी कटकोव ने ओपनसेल कमांड में विकल्प जोड़ने के लिए टिप्पणियों में सुझाव -servername
दिया है, अन्यथा वेलेरी के मामले में कमांड को www.github.com के लिए प्रमाण पत्र नहीं दिखाया गया है।
openssl s_client -showcerts -servername www.github.com -connect www.github.com:443
Findekano टिप्पणियों में जोड़ता है :
के स्थान की पहचान करने के लिए curl-ca-bundle.crt
, आप कमांड का उपयोग कर सकते हैं
curl-config --ca
इसके अलावा, मेरे और हालिया उत्तर " github: सर्वर प्रमाणपत्र सत्यापन विफल " देखें: आपको उन प्रमाणपत्रों का नाम बदलना पड़ सकता है:
sudo apt-get install --reinstall ca-certificates
sudo mkdir /usr/local/share/ca-certificates/cacert.org
sudo wget -P /usr/local/share/ca-certificates/cacert.org http://www.cacert.org/certs/root.crt http://www.cacert.org/certs/class3.crt
sudo update-ca-certificates
git config --global http.sslCAinfo /etc/ssl/certs/ca-certificates.crt
curl-config --ca
वापस आ गया/etc/ssl/certs/ca-certificates.crt
, जो मुझे प्रमाण पत्र जोड़ना था। इसके अलावा यह जवाब इस मुद्दे के साथ मुझे सही दिशा में इंगित करने वाली पहली जानकारी थी