मैं स्वयं हस्ताक्षरित प्रमाणपत्र को कैसे स्वीकार कर सकता हूं?


648

Git का उपयोग करना, क्या यह एक तरीका है कि वह स्वयं हस्ताक्षरित प्रमाण पत्र को स्वीकार कर सके?

मैं एक git सर्वर को होस्ट करने के लिए एक https सर्वर का उपयोग कर रहा हूं, लेकिन अभी के लिए प्रमाणपत्र स्वयं हस्ताक्षरित है।

जब मैंने पहली बार रेपो बनाने की कोशिश की:

git push origin master -f

मुझे त्रुटि मिली:

error: Cannot access URL     
https://the server/git.aspx/PocketReferences/, return code 22

fatal: git-http-push failed

4
आप कैसे जानते हैं कि मुद्दा प्रमाण पत्र है?
अंबर

1
किसी अन्य उपयोगकर्ता के Git टूल के बजाय एक PC से उन्हें प्रमाणपत्र को अनदेखा करने की सुविधा मिलती है और यह काम करता है। एक मैक से, मैं कैसे नजरअंदाज कर सकते हैं पता नहीं है।
इयान विंक

मुझे जो त्रुटि मिली, 2.1.1 git के साथ: "घातक: 'https: //.../project.git/' तक पहुंचने में असमर्थ: SSL प्रमाणपत्र समस्या: प्रमाणपत्र श्रृंखला में स्वयं हस्ताक्षरित प्रमाण पत्र"
स्टेन कुर्दिज़ल

OSX / macintosh पर, ऐसा लगता है कि git sslcainfoविकल्प का उपयोग नहीं करेगा । यदि आप सफलतापूर्वक curl --cacertअपने रेपो पथ को खींचने के लिए उपयोग कर सकते हैं, लेकिन गिट काम नहीं कर रहा है, तो आपको प्रमाणपत्र को रहस्यमय OSX किचेन प्रोग्राम में जोड़ना चाहिए। और अधिक यहाँ पर superuser.com/questions/605900/…
amwinter

मुझे लगता है कि यह डॉक उपयोगी है gist.github.com/evantoli/f8c23a37eb3558ab8765
Mofaggol Hoshen

जवाबों:


1166

किसी विशिष्ट प्रमाणपत्र को स्थायी रूप से स्वीकार करने के लिए

कोशिश करो http.sslCAPathया http.sslCAInfoएडम स्पियर्स का जवाब कुछ बेहतरीन उदाहरण देता है। यह प्रश्न का सबसे सुरक्षित समाधान है।

एकल git कमांड के लिए TLS / SSL सत्यापन अक्षम करना

गुजर कोशिश -cकरने के लिए gitउचित config चर के साथ प्रयोग होता है या प्रवाह के जवाब :

git -c http.sslVerify=false clone https://example.com/path/to/git

एक विशिष्ट रिपॉजिटरी के लिए SSL सत्यापन को अक्षम करने के लिए

यदि भंडार पूरी तरह से आपके नियंत्रण में है, तो आप कोशिश कर सकते हैं:

git config --global http.sslVerify false

में काफी कुछ SSL विन्यास विकल्प हैं git। के मैन पेज से git config:

http.sslVerify
    Whether to verify the SSL certificate when fetching or pushing over HTTPS.
    Can be overridden by the GIT_SSL_NO_VERIFY environment variable.

http.sslCAInfo
    File containing the certificates to verify the peer with when fetching or pushing
    over HTTPS. Can be overridden by the GIT_SSL_CAINFO environment variable.

http.sslCAPath
    Path containing files with the CA certificates to verify the peer with when
    fetching or pushing over HTTPS.
    Can be overridden by the GIT_SSL_CAPATH environment variable.

कुछ अन्य उपयोगी एसएसएल विन्यास विकल्प:

http.sslCert
    File containing the SSL certificate when fetching or pushing over HTTPS.
    Can be overridden by the GIT_SSL_CERT environment variable.

http.sslKey
    File containing the SSL private key when fetching or pushing over HTTPS.
    Can be overridden by the GIT_SSL_KEY environment variable.

http.sslCertPasswordProtected
    Enable git's password prompt for the SSL certificate. Otherwise OpenSSL will
    prompt the user, possibly many times, if the certificate or private key is encrypted.
    Can be overridden by the GIT_SSL_CERT_PASSWORD_PROTECTED environment variable.

40
'git config --global http.sslVerify false' ने चाल चली। धन्यवाद!
क्रिस स्टोरी

110
आपको कभी भी TLS (/ SSL) प्रमाणपत्र सत्यापन को वैश्विक रूप से अक्षम नहीं करना चाहिए ।
प्रवाह करें

4
@ फालो - मैं पूरी तरह से कॉन्फिडेंट हूं। मैंने इसे (अब काफी पुराना) संपादित किया है, टीएलएस / एसएसएल प्रमाणपत्र सत्यापन को अक्षम करने के बारे में अधिक विनम्र होने का जवाब देता है।
क्रिस्टोफर

8
मेरे लिए यह git -c http.sslVerify=false clone https://domain.com/path/to/gitमेरी समस्या का समाधान, धन्यवाद ...
फर्नांडो

2
@ फ़्लो यदि हम एक ऐसे कार्य वातावरण में हैं जहाँ हमारा नियोक्ता MITM है , तो विश्व स्तर पर टीएलएस / एसएसएल को निष्क्रिय करने का क्या विकल्प है?
स्टेवोइसाक

164

आप सेट कर सकते GIT_SSL_NO_VERIFYकरने के लिए true:

GIT_SSL_NO_VERIFY=true git clone https://example.com/path/to/git

या वैकल्पिक रूप से कॉन्फ़िगर करें कमांड लाइन पर कनेक्शन को सत्यापित करने के लिए नहीं:

git -c http.sslVerify=false clone https://example.com/path/to/git

ध्यान दें कि यदि आप एसएसएल / टीएलएस प्रमाणपत्रों का सत्यापन नहीं करते हैं, तो आप मिटम हमलों के लिए अतिसंवेदनशील हैं


2
आप एकल आदेश के लिए कॉन्फ़िगरेशन मान को संशोधित करने के लिए -cध्वज का उपयोग भी कर सकते हैं git। मुझे लगता है कि यह वाक्यविन्यास क्लीनर है, हालांकि।
क्रिस्टोफर

1
आह, मुझे समझ में नहीं आया -c। मुझे वास्तव में लगता है कि यह पर्यावरण को प्रदूषित करने के बजाय क्लीनर समाधान है। :)
प्रवाह

1
@SkylarSaveland ध्यान दें कि git -c http.sslVerify=false <gitSubCommand>बिचौलियों के माध्यम से भी काम कर सकते हैं।
प्रवाह

1
मुझे ध्यान दिया जाना चाहिए कि यह समाधान आपको पुरुषों के बीच के हमलों के लिए खोलता है।
omikron

2
उत्तर केवल सबसे कम सुरक्षित विकल्प का वर्णन करता है
cp.engr

139

मैं मौजूदा उत्तरों के [EDIT: मूल संस्करणों] का बहुत बड़ा प्रशंसक नहीं हूं , क्योंकि सुरक्षा जांच को अक्षम करना एक अंतिम उपाय होना चाहिए, न कि पहला समाधान। भले ही आप सत्यापन के कुछ अतिरिक्त तरीके के बिना पहली रसीद पर स्व-हस्ताक्षरित प्रमाणपत्रों पर भरोसा नहीं कर सकते हैं, लेकिन बाद के gitसंचालन के लिए प्रमाण पत्र का उपयोग करके कम से कम हमलों के लिए जीवन बहुत कठिन हो जाता है जो केवल प्रमाण पत्र डाउनलोड करने के बाद होता है । दूसरे शब्दों में, यदि प्रमाण पत्र आप डाउनलोड की है असली है, तो आप उस समय के बाद से हैं अच्छा। इसके विपरीत, यदि आप केवल सत्यापन अक्षम करते हैं तो आप किसी भी बिंदु पर किसी भी तरह के मानव-में-मध्य हमले के लिए खुले हैं ।

एक विशिष्ट उदाहरण देने के लिए: प्रसिद्ध repo.or.czभंडार एक स्व-हस्ताक्षरित प्रमाण पत्र प्रदान करता है । मैं उस फ़ाइल को डाउनलोड कर सकता हूँ, उसे कहीं रख सकता हूँ /etc/ssl/certs, और फिर करूँगा:

# Initial clone
GIT_SSL_CAINFO=/etc/ssl/certs/rorcz_root_cert.pem \
    git clone https://repo.or.cz/org-mode.git

# Ensure all future interactions with origin remote also work
cd org-mode
git config http.sslCAInfo /etc/ssl/certs/rorcz_root_cert.pem

ध्यान दें कि git configयहां स्थानीय (अर्थात बिना --global) का उपयोग करने का अर्थ है कि यह स्व-हस्ताक्षरित प्रमाणपत्र केवल इस विशेष भंडार के लिए विश्वसनीय है, जो अच्छा है। इसका उपयोग GIT_SSL_CAPATHकरने की तुलना में यह भी अच्छा है क्योंकि यह gitएक अलग प्रमाण पत्र प्राधिकरण के माध्यम से सत्यापन करने के जोखिम को समाप्त करता है जिसे संभवतः समझौता किया जा सकता है।


3
संयोग से, http.sslCAPath libcurl के ssl_capath तर्क का उपयोग करता है। मुझे लगता है कि आप वास्तव में /etc/ssl/certs/निर्देशिका में किसी भी संख्या में सीरट्स को स्टोर कर सकते हैं और यह कुशलतापूर्वक आपकी ज़रूरत की हर चीज़ को छाँट देगा। मैंने इसका परीक्षण नहीं किया है, आप पर ध्यान दें, लेकिन हो सकता है कि आप इसे --globalपूरी तरह से अनाज के साथ उपयोग करने दें । यद्यपि परीक्षण योग्य है।
क्रिस्टोफर

6
एसएसएल सत्यापन पूरी तरह अक्षम करने के जोखिम को ध्यान में रखते हुए, और यह तथ्य सवाल था "मैं कैसे Git स्वीकार कर सकते हैं एक आत्म हस्ताक्षरित प्रमाणपत्र?", इस स्वीकार किए जाते हैं जवाब होना चाहिए।
PLNech

5
एक आदर्श दुनिया में, कुछ ऐसा होगाgit config http.validCertFingerprint <base64-encoded-hash-of-certifcate>
फ़्लो

1
इंटरनेट पर एकमात्र उत्तर जो वास्तव में मेरे परिदृश्य के लिए काम करता है। निजी कंपोज़र VCS लाइब्रेरी होने के नाते, SSL पर स्व-होस्ट किए गए Gitlab पर होस्ट किया गया जिसे मुझे git द्वारा प्रोजेक्ट किए गए संस्करण की आवश्यकता है।
देजव

1
एक ताजा क्लोन से; यह एक पंक्ति में किया जा सकता है: git clone --config http.sslCAInfo=<path_to_cert> https://repo.or.cz/org-mode.git('git config' कमांड को कॉल करने की आवश्यकता नहीं है)।
हारून

39

जीआईटी स्व-हस्ताक्षरित प्रमाणपत्र कॉन्फ़िगरेशन

tl; डॉ

सभी SSL सत्यापन अक्षम करें!

यह एक खराब सुरक्षा संस्कृति बनाता है। वह व्यक्ति मत बनो।

आपके द्वारा की जाने वाली कॉन्फिग कुंजी:

  • http.sslverify- अटल सत्य। नोट के ऊपर देखें

ये उन होस्ट प्रमाणपत्रों को कॉन्फ़िगर करने के लिए हैं जिन पर आप भरोसा करते हैं

एसएसएल चुनौतियों का जवाब देने के लिए ये आपके प्रमाणपत्र को कॉन्फ़िगर करने के लिए हैं।

विशिष्ट मेजबानों के लिए उपरोक्त सेटिंग्स को चुनिंदा रूप से लागू करें।

.gitconfigस्व-हस्ताक्षरित प्रमाणपत्र अधिकारियों के लिए वैश्विक

मेरे अपने और मेरे सहकर्मियों के लिए यहाँ है कि हम कैसे अक्षम किए बिना काम करने के लिए स्व हस्ताक्षरित प्रमाण पत्र प्राप्त करने में कामयाब रहे sslVerify। इन्हें जोड़ने के लिए अपने संपादन.gitconfig को संपादित करेंgit config --global -e :

# Specify the scheme and host as a 'context' that only these settings apply
# Must use Git v1.8.5+ for these contexts to work
[credential "https://your.domain.com"]
  username = user.name

  # Uncomment the credential helper that applies to your platform
  # Windows
  # helper = manager

  # OSX
  # helper = osxkeychain

  # Linux (in-memory credential helper)
  # helper = cache

  # Linux (permanent storage credential helper)
  # https://askubuntu.com/a/776335/491772

# Specify the scheme and host as a 'context' that only these settings apply 
# Must use Git v1.8.5+ for these contexts to work
[http "https://your.domain.com"]
  ##################################
  # Self Signed Server Certificate #
  ##################################

  # MUST be PEM format
  # Some situations require both the CAPath AND CAInfo 
  sslCAInfo = /path/to/selfCA/self-signed-certificate.crt
  sslCAPath = /path/to/selfCA/
  sslVerify = true

  ###########################################
  # Private Key and Certificate information #
  ###########################################

  # Must be PEM format and include BEGIN CERTIFICATE / END CERTIFICATE, 
  # not just the BEGIN PRIVATE KEY / END PRIVATE KEY for Git to recognise it.
  sslCert = /path/to/privatekey/myprivatecert.pem

  # Even if your PEM file is password protected, set this to false.
  # Setting this to true always asks for a password even if you don't have one.
  # When you do have a password, even with this set to false it will prompt anyhow. 
  sslCertPasswordProtected = 0

संदर्भ:

Config निर्दिष्ट करें जब git cloneआईएनजी

यदि आपको इसे प्रति रेपो आधार पर लागू करने की आवश्यकता है, तो प्रलेखन आपको केवल git config --localअपनी रेपो निर्देशिका में चलाने के लिए कहता है । जब आप स्थानीय स्तर पर अब तक रेपो क्लोन नहीं कर पाए हैं तो यह उपयोगी नहीं है?

आप global -> localअपना वैश्विक कॉन्फ़िगरेशन उपर्युक्त के रूप में सेट करके hokey-pokey कर सकते हैं और फिर एक बार क्लोन करने के बाद उन सेटिंग्स को अपने स्थानीय रेपो कॉन्फ़िगर में कॉपी कर सकते हैं ...

या आप जो कर सकते हैं, वह निर्दिष्ट हैgit clone कि एक बार इसे क्लोन करने के बाद टारगेट रेपो पर लागू करने के लिए कॉन्फ़िगर कमांड्स

# Declare variables to make clone command less verbose     
OUR_CA_PATH=/path/to/selfCA/
OUR_CA_FILE=$OUR_CA_PATH/self-signed-certificate.crt
MY_PEM_FILE=/path/to/privatekey/myprivatecert.pem
SELF_SIGN_CONFIG="-c http.sslCAPath=$OUR_CA_PATH -c http.sslCAInfo=$OUR_CA_FILE -c http.sslVerify=1 -c http.sslCert=$MY_PEM_FILE -c http.sslCertPasswordProtected=0"

# With this environment variable defined it makes subsequent clones easier if you need to pull down multiple repos.
git clone $SELF_SIGN_CONFIG https://mygit.server.com/projects/myproject.git myproject/

एक लाइन

संपादित करें: VonC का उत्तर देखें जो 2.14.x / 2.15 से इस एक लाइनर के विशिष्ट git संस्करणों के लिए निरपेक्ष और सापेक्ष पथों के बारे में एक चेतावनी देता है।

git clone -c http.sslCAPath="/path/to/selfCA" -c http.sslCAInfo="/path/to/selfCA/self-signed-certificate.crt" -c http.sslVerify=1 -c http.sslCert="/path/to/privatekey/myprivatecert.pem" -c http.sslCertPasswordProtected=0 https://mygit.server.com/projects/myproject.git myproject/

CentOS unable to load client key

यदि आप इसे CentOS पर आज़मा रहे हैं और आपकी .pemफ़ाइल आपको दे रही है

unable to load client key: "-8178 (SEC_ERROR_BAD_KEY)"

तब आप यह चाहते हैं कि ओपन एसएसएलटी के बजाय एनएसएस का उपयोग कैसे किया जाए, इसके बारे में स्टैकऑवरफ्लो उत्तर देगा curl

और आप स्रोत से पुनर्निर्माणcurl करना चाहते हैं :

git clone http://github.com/curl/curl.git curl/
cd curl/
# Need these for ./buildconf
yum install autoconf automake libtool m4 nroff perl -y
#Need these for ./configure
yum install openssl-devel openldap-devel libssh2-devel -y

./buildconf
su # Switch to super user to install into /usr/bin/curl
./configure --with-openssl --with-ldap --with-libssh2 --prefix=/usr/
make
make install

कंप्यूटर को पुनरारंभ करें क्योंकि एक साझा लाइब्रेरी के रूप में libcurl अभी भी मेमोरी में है

पायथन, पाइप और कोंडा

संबंधित : विंडोज में पाइप द्वारा उपयोग किए जाने वाले सीए स्टोर में एक कस्टम सीए रूट प्रमाणपत्र कैसे जोड़ा जाए?


मुझे यह सुनिश्चित करना था कि स्व-हस्ताक्षरित सर्वर प्रमाणपत्र पीईएम प्रारूप में था, इससे पहले कि यह स्वीकार करेगा। इसके अलावा, उपर्युक्त उत्तरों में से कुछ संकेत देते हैं कि किसी को केवल सर्टिफिकेट के फ़ोल्डर का उपयोग करने के लिए पथ प्रदान करना होगा http.sslCAPath। मेरे मामले में, मुझे http.sslCAInfoविशिष्ट फ़ाइल निर्दिष्ट करने के लिए उपयोग करना था । SSL सत्यापन को अक्षम किए बिना Git को हमारे निजी GitHub से कनेक्ट करने की अनुमति देता है।
ज़ेरेफेथ

@Zarepheth उस जानकारी के लिए धन्यवाद। मैं एक ही मुद्दे में भाग गया, जिसमें Capath और CAInfo दोनों की आवश्यकता थी। चूंकि हमारा सीए सर्टिफिकेट पीईएम प्रारूप था, इसलिए मैंने इसे दस्तावेजीकरण की अनदेखी की। मैंने इन परिवर्धन के साथ उत्तर को अद्यतन किया है। खुशी है कि आप सुरक्षित रूप से जुड़े रहने में सक्षम थे।
जोश पीक

यदि आप क्लोन करने के लिए HTTPS का उपयोग करने के लिए मजबूर हैं और प्रमाणपत्र गड़बड़ को दरकिनार करने के लिए SSH का उपयोग नहीं कर सकते हैं तो यह संभवतः सबसे अच्छा दीर्घकालिक "फिक्स" उत्तर है।
ड्रैगन

मैं इस उत्तर को जोड़ने वाला था! खुशी है कि किसी और ने इसे पहले ही खोज लिया था।
फ्रैंकलिन यू

14

मैं इस समस्या को लेकर आता रहता हूं, इसलिए सर्वर से स्व-हस्ताक्षरित प्रमाणपत्र डाउनलोड करने के लिए एक स्क्रिप्ट लिखी है और इसे ~ .gitcerts पर इंस्टॉल करना है, फिर इन प्रमाणपत्रों को इंगित करने के लिए git-config अपडेट करें। यह वैश्विक कॉन्फ़िगरेशन में संग्रहीत है, इसलिए आपको इसे केवल एक बार रिमोट के अनुसार चलाने की आवश्यकता है।

https://github.com/iwonbigbro/tools/blob/master/bin/git-remote-install-cert.sh


अच्छा है, हालांकि यह भी अच्छा होगा कि वैश्विक के बजाय स्थानीय विन्यास का उपयोग करने का विकल्प होगा।
एडम स्पाइर्स

3
आप इसे हमेशा फोर्क कर सकते हैं और --global विकल्प हटा सकते हैं ;-)
क्रेग

यह बहुत अच्छा है, क्या यह बैच में आता है?
हाल्टर

10

यह जवाब माइकल कॉफ़मैन द्वारा लिखित इस लेख से लिया गया है।

कॉर्पोरेट SSL प्रमाणपत्र के साथ Windows के लिए Git का उपयोग करें

मुद्दा :

यदि आपके पास एक कॉर्पोरेट एसएसएल प्रमाणपत्र है और आप अपने रपो को कंसोल या VSCode से क्लोन करना चाहते हैं, तो आपको निम्न त्रुटि मिलेगी:

घातक: ' https: // myserver / tfs / DefaultCollection / _git / Proj / ' तक पहुंचने में असमर्थ: SSL प्रमाणपत्र समस्या: स्थानीय जारीकर्ता प्रमाणपत्र प्राप्त करने में असमर्थ

समाधान :

  1. रूट स्व-हस्ताक्षरित प्रमाणपत्र को फ़ाइल में निर्यात करें। आप इसे अपने ब्राउज़र से कर सकते हैं।

  2. अपने git फ़ोल्डर में "ca-bundle.crt" फ़ाइल का पता लगाएँ (वर्तमान संस्करण C: \ Program Files \ Git \ usr \ ssl \ certs लेकिन अतीत में बदल गया है)। फ़ाइल को अपने उपयोगकर्ता प्रोफ़ाइल में कॉपी करें। इसे VSCode जैसे टेक्स्ट एडिटर के साथ खोलें और फ़ाइल के अंत में अपने निर्यात किए गए प्रमाणपत्र की सामग्री जोड़ें।

अब हमें नई फ़ाइल का उपयोग करने के लिए git कॉन्फ़िगर करना होगा:

git config --global http.sslCAInfo C:/Users/<yourname>/ca-bundle.crt

यह आपके उपयोगकर्ता प्रोफ़ाइल के मूल में आपकी .gitconfig फ़ाइल में निम्न प्रविष्टि जोड़ देगा।

[http] sslCAInfo = C:/Users/<yourname>/ca-bundle.crt


1
धन्यवाद, मुझे यह उत्तर विंडोज के लिए आसान और सुरक्षित लगा।
पिस्सु

7

एक विशिष्ट रिपॉजिटरी के लिए SSL सत्यापन को अक्षम करने के लिए यदि रिपॉजिटरी पूरी तरह से आपके नियंत्रण में है, तो आप कोशिश कर सकते हैं:

 git config --global http.sslVerify false

3

सावधान रहें जब आप एक लाइनर का उपयोग कर रहे हैं sslKey या sslCert का उपयोग करते हुए, जैसा कि जोश पीक के उत्तर में है :

git clone -c http.sslCAPath="/path/to/selfCA" \
  -c http.sslCAInfo="/path/to/selfCA/self-signed-certificate.crt" \
  -c http.sslVerify=1 \
  -c http.sslCert="/path/to/privatekey/myprivatecert.pem" \
  -c http.sslCertPasswordProtected=0 \
https://mygit.server.com/projects/myproject.git myproject

केवल Git 2.14.x / 2.15 (Q3 2015) ~username/mykeyसही तरह से एक पथ की व्याख्या करने में सक्षम होगा (जबकि यह अभी भी एक निरपेक्ष की तरह व्याख्या कर सकता है)/path/to/privatekey )।

देखें प्रतिबद्ध 8d15496 द्वारा (20 जुला 2017) Junio सी Hamano ( gitster)
मदद-द्वारा: चार्ल्स बेली ( hashpling)
( जूनियो सी gitsterहमानो द्वारा विलय - - १1 बीडी , ११ अगस्त २०१io में )

http.c: http.sslcertऔर http.sslkeyदोनों पथनाम हैं

जब आधुनिक http_options () कोडपथ को विभिन्न http पार्स करने के लिए बनाया गया था। * 29508e1 पर विकल्प (" आइसोलेट साझा HTTP अनुरोध कार्यक्षमता", 2005-11-18, Git 0.99.9k), और फिर बाद में कई के बीच के अंतर को ठीक किया गया। में विन्यास फाइल 7059cd9 ( " http_init(): फिक्स कॉन्फ़िग फ़ाइल पार्स", 2009-03-09, Git 1.6.3-RC0), हम विन्यास चर की तरह पार्स http.sslkey, http.sslcert, सादे वेनिला तारों के रूप में, क्योंकि git_config_pathname()यह बात समझता है "~[username]/ " उपसर्ग मौजूद नहीं था।

बाद में, हमने उनमें से कुछ (अर्थात्, http.sslCAPathऔर http.sslCAInfo) फ़ंक्शन का उपयोग करने के लिए परिवर्तित किया, और http.cookeyFile http.pinnedpubkeyशुरुआत से फ़ंक्शन का उपयोग करने के लिए चर जैसे जोड़े । उसके कारण, ये चर सभी समझते हैं "~[username]/ " उपसर्ग को ।

शेष दो चर बनाएं, http.sslcertऔर http.sslkey, सम्मेलन के बारे में भी जानकारी रखें, क्योंकि वे दोनों स्पष्ट रूप से फ़ाइलों के लिए पथप्रदर्शक हैं।


3

Windows पर Git के 64 बिट संस्करण का उपयोग करते हुए, बस इन फाइलों में स्व हस्ताक्षरित CA प्रमाणपत्र जोड़ें

  • C: \ Program Files \ Git \ mingw64 \ ssl \ certs \ ca-bundle.crt
  • C: \ Program Files \ Git \ mingw64 \ ssl \ certs \ ca-bundle.trust.crt

अगर यह सिर्फ एक सर्वर सेल्फ अटेस्टेड सर्टिफिकेट है तो इसे इसमें जोड़ें

  • C: \ Program Files \ Git \ mingw64 \ ssl \ cert.pem

यह हमारी कंपनी फ़ायरवॉल से निपटने का सबसे अच्छा तरीका था जो सभी HTTPS ट्रैफ़िक को फिर से साइन करता है। मैंने बस फ़ायरवॉल सर्टिफ़िकेट की PEM स्वरूपित crt फ़ाइल को पाठ के रूप में लिया और इसे ca-बंडल में चिपकाया और यह एक आकर्षण की तरह काम करता है।
Mitten.O

3

अपने एंटीवायरस और फ़ायरवॉल सेटिंग्स की जाँच करें।

एक दिन से दूसरे दिन, git अब काम नहीं करता था। ऊपर वर्णित के साथ, मैंने पाया कि कास्परस्की बीच में एक स्व-हस्ताक्षरित एंटी-वायरस व्यक्तिगत रूट प्रमाण पत्र रखता है। मैंने ऊपर दिए गए निर्देशों का पालन करते हुए Git को उस प्रमाणपत्र को स्वीकार करने देने का प्रबंधन नहीं किया। मैंने उस पर ध्यान दिया। एन्क्रिप्टेड कनेक्शन को स्कैन करने की सुविधा को अक्षम करने के लिए मेरे लिए क्या काम करता है।

  1. Kaspersky खोलें
  2. सेटिंग्स> अतिरिक्त> नेटवर्क> एन्क्रिप्टेड कनेक्शन को स्कैन न करें

इसके बाद, gs sslVerify enable के साथ फिर से काम करता है।

ध्यान दें। यह अभी भी मेरे लिए संतोषजनक नहीं है, क्योंकि मैं अपने एंटी-वायरस के उस फीचर को सक्रिय करना चाहूंगा। उन्नत सेटिंग्स में, कास्परस्की उन वेबसाइटों की एक सूची दिखाता है जो उस सुविधा के साथ काम नहीं करेंगे। गिथब उनमें से एक के रूप में सूचीबद्ध नहीं है। मैं Kaspersky फोरम में इसकी जाँच करूँगा। कुछ विषय लगते हैं, जैसे https://forum.kaspersky.com/index.php?/topic/395220-kis-interfering-with-git/&tab=comments#comment-2801211



1

मैं इसे इस तरह से करता हूं:

git init
git config --global http.sslVerify false
git clone https://myurl/myrepo.git

3
उपयोग न करें --global! बहुत सारे ट्यूटोरियल दिखाते हैं --globalलेकिन यह सामान्य रूप से और http.sslVerifyविशेष रूप से बहुत बुरा विचार है । जैसे ही आपके पास अधिक होता है तो विभिन्न परियोजनाओं, कंपनियों, कंप्यूटर पर टीमों से एक क्लोन आप जल्दी से मुसीबत में चला सकते हैं। उदाहरण के लिए यूजर आईडी और ईमेल एक प्रोजेक्ट से दूसरे में लीक होना काफी शर्मनाक हो सकता है। और का उपयोग कर --globalपर http.sslVerifyआप हर तरह की सुरक्षा के मुद्दों को खोल सकते हैं। तो: उपयोग न करें --global- जब तक आप दुष्प्रभावों से पूरी तरह से वाकिफ नहीं होते और जोखिम लेने के लिए तैयार रहते हैं।
मार्टिन

1

विंडोज पर यह मेरे लिए काम करता है:

अपने स्वयं के हस्ताक्षरित प्रमाणपत्र की सामग्री को ca-बंडल फ़ाइल के अंत में जोड़ें । जिसमें ----- BEGIN CERTIFICATE ----- और ----- END CERTIFICATE ----- लाइनें शामिल हैं

के स्थान ca-बंडल फ़ाइल आमतौर पर है C: \ Program Files \ Git \ mingw64 \ ssl \ प्रमाणपत्र

बाद में, ca- बंडल फ़ाइल का पथ वैश्विक गिट विन्यास में जोड़ें। निम्न आदेश चाल करता है:git config --global http.sslCAInfo "C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt"

टिप्पणी: पथ ca- बंडल फ़ाइल के आपके स्थानीय पथ पर निर्भर करता है!


1

Http.sslVerify को झूठा सेट करना एक अच्छा अभ्यास नहीं है। इसके बजाय हम SSL प्रमाणपत्र का उपयोग कर सकते हैं।

तो, बिल्ड एजेंट प्रमाणीकरण के लिए एसएसएल प्रमाणपत्र और पीएटी के साथ https का उपयोग करेगा। यहाँ छवि विवरण दर्ज करें

यहाँ छवि विवरण दर्ज करें

यहाँ छवि विवरण दर्ज करें

सेबी फ़ाइल सहित सामग्री फ़ाइल की प्रतिलिपि बनाएँ और –end--।

बिल्ड एजेंट पर git bash => git config -global http.sslcainfo "C: / Program Files / Git / mingw64 / ssl / certs / ca-bundle.crt" इस फ़ाइल पर जाएं और .cer सामग्री को जोड़ें।

इस प्रकार, बिल्ड एजेंट एसएसएल प्रमाणपत्र तक पहुंच सकता है


0

मेरा उत्तर देर से आ सकता है लेकिन इसने मेरे लिए काम किया। यह किसी की मदद कर सकता है।

मैंने ऊपर वर्णित चरणों की कोशिश की और इस मुद्दे को हल नहीं किया।

इसे इस्तेमाल करेgit config --global http.sslVerify false


0

मैं एक विंडोज़ मशीन का उपयोग करता हूं और इस लेख ने मेरी मदद की। मूल रूप से मैंने नोटपैड में ca-bundle.crt को खोला और इसमें (उन सभी को) चेन सर्टिफिकेट जोड़े। यह समस्या आमतौर पर कंपनी नेटवर्क के लिए होती है जहां हम मध्यम पुरुष सिस्टम और गिट रेपो के बीच बैठे होते हैं। हमें बेस 64 प्रारूप में लीफ सर्टिफिकेट को छोड़कर सभी श्रृंखलाओं के सभी प्रमाणपत्रों को निर्यात करना होगा और उन सभी को ca-bundle.crt में जोड़ना होगा और फिर इस संशोधित crt फ़ाइल के लिए git कॉन्फ़िगर करना होगा।

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