ฉันจะตั้งค่า GIT_SSL_NO_VERIFY สำหรับ repos เฉพาะได้อย่างไร


283

ฉันต้องใช้เซิร์ฟเวอร์ git ที่ไม่มีใบรับรองที่ถูกต้อง แต่ฉันไม่ต้องการทำ

env GIT_SSL_NO_VERIFY=true git command

ทุกครั้งที่ฉันทำการคอมไพล์ แต่ฉันยังต้องการเปิดใช้งาน SSL สำหรับที่เก็บ git อื่น มีวิธีทำให้ท้องถิ่นนี้เป็น repo เดียวหรือไม่?



f15ijp.com/2012/08/… หนึ่งในโซลูชันที่ดีที่สุดที่ฉันพบ
vikas etagi

คำตอบ:


540

คุณทำได้

git config http.sslVerify false

ใน repo เฉพาะของคุณเพื่อปิดใช้งานการตรวจสอบใบรับรอง SSL สำหรับ repo นั้นเท่านั้น


54
git config --global http.sslVerify "false"
roothahn

24
--Global ไม่ควรใช้เนื่องจาก OP ได้ร้องขอเป็นพิเศษว่าเขาต้องการสำหรับ repos เฉพาะเท่านั้น
Kannan Ekanath

9
หมายเหตุ: ดูเหมือนว่า--globalตัวเลือกจะต้องใช้เมื่อ repo ยังไม่ได้ชำระเงิน (ไม่สามารถตั้งค่าตัวเลือกสำหรับ repo ที่ยังไม่มีอยู่ในเครื่อง) เราสามารถเปิดใช้งานได้อีกครั้งหลังจากนั้น
James Wilkins

2
ฉันย้อนกลับการแก้ไขเนื่องจากคำถามไม่ได้ขอสิ่งนี้โดยเฉพาะและเป็นความคิดที่ดีที่จะปิดการใช้งานทั่วโลกด้วยเหตุผลด้านความปลอดภัย
Étienne

2
ฉันย้อนกลับการแก้ไขอีกครั้งด้วยเหตุผลเดียวกับข้างบน คำถามนี้เกี่ยวกับธุรกรรมซื้อคืนที่เฉพาะเจาะจง หากคุณต้องการคำตอบสำหรับ repos ทั้งหมดนั่นควรเป็นคำถามแยกต่างหาก
Calimo

121

คุณสามารถทำได้ดังนี้

สำหรับ repo เดียว

git config http.sslVerify false

สำหรับซื้อคืนทั้งหมด

git config --global http.sslVerify false

7
วิธีนี้จะปิดใช้งานการตรวจสอบ SSL สำหรับที่เก็บทั้งหมด คำถามเดิมเกี่ยวกับการทำให้มันอยู่ในที่เก็บเดียว
Gwynne Raskind

4
ทำไมในโลกที่คุณใช้ sudo อยู่? ที่เก็บข้อมูลในเครื่องไม่จำเป็นต้องใช้และการกำหนดค่าผู้ใช้อยู่ที่ $ HOME (ทุกอย่างที่อยู่ในระบบของคุณ) ดังนั้นจึงไม่จำเป็นต้องใช้ sudo
mcepl

@ParthianShot หากพวกเขาไม่ใช่ผู้ใช้ที่เป็นผู้ดูแลระบบพวกเขาสามารถใช้สิ่งนี้ได้อย่างไร
ธีรุมาลัยมุนดู

1
@Thirumalaimurugan ตอนนี้คุณจริงจังไหม sudoควรใช้เมื่อคุณต้องการรูทเพื่อทำบางสิ่งเท่านั้น เช่นเดียวกับการติดตั้งซอฟต์แวร์ใหม่การแก้ไขไฟล์ระบบที่สำคัญฟอร์แมตไดรฟ์การกำหนดค่าเครือข่ายใหม่จัดการบริการ ... ไม่มีอะไรในคำถามของผู้ชายคนนี้ที่บอกว่าเขาต้องการรูทเพื่อทำอะไร หากคุณเป็นผู้ดูแลระบบคุณควรใช้คำสั่งส่วนใหญ่รวมถึงคำสั่งที่เปลี่ยนการกำหนดค่าโดยไม่ต้องใช้ sudo เป็นส่วนใหญ่
คู่ปรับ Shot

1
@HolaSoyEduFelizNavidad เมื่อ OP กล่าวว่า "สำหรับ repo ทั้งหมด" OP หมายถึง "repos ทั้งหมดสำหรับผู้ใช้นี้" ไม่ใช่ "repos ทั้งหมดบนคอมพิวเตอร์"
vy32

98

ชอบสิ่งที่ Thirumalai กล่าวว่า --globalแต่ภายในของพื้นที่เก็บข้อมูลโคลนและไม่มี กล่าวคือ

  1. GIT_SSL_NO_VERIFY=true git clone https://url
  2. cd <directory-of-the-clone>
  3. git config http.sslVerify false

ทางออกที่ดีสำหรับกรณีเมื่อคุณcould not lock global config file .gitconfig: Permission denied
antongorodezkiy

1
หากคุณได้รับอนุญาตปฏิเสธ. gitconfig มีบางอย่างที่ ske * ed จริงจังกับระบบของคุณ $ HOME ของคุณควรจะมีให้คุณ (ซึ่งเป็นที่ที่. gitconfig ควรอยู่หรือไม่?)
mcepl

นี่ไม่ใช่เซิร์ฟเวอร์ของฉัน แต่ขอบคุณนะยังไงก็ตาม และฉันลบเส้นทางออกจากข้อความแสดงข้อผิดพลาดจริง ๆ แล้วในคอมไพล์เซิร์ฟเวอร์นั้นพยายามที่จะเข้าถึง. gitconfig บางแห่งใน/var/www/...
antongorodezkiy

คำตอบนี้ยังมีคำอธิบายที่ดีเกี่ยวกับตัวเลือก stackoverflow.com/a/11622001
dragon788

2
ส่งออก GIT_SSL_NO_VERIFY = true
ETech

11

โดยเฉพาะอย่างยิ่งถ้าคุณต้องการโคลนซ้ำ

GIT_SSL_NO_VERIFY=true git clone --recursive https://github.com/xx/xx.git

10

หากคุณอยู่ในเครื่อง Windows และติดตั้ง Git ไว้คุณสามารถลองทำตามขั้นตอนด้านล่าง:

  1. ไปที่โฟลเดอร์ของการติดตั้ง Git เช่น C: \ Program Files (x86) \ Git \ etc
  2. แก้ไขไฟล์: gitconfig
  3. ในส่วน[http]ให้เพิ่มบรรทัด: sslVerify = false

    [http]
      sslVerify = false
    

1
สิ่งนี้ยังไม่ตรงกับคำถามด้านบนซึ่งเขาบอกว่าเขาไม่ต้องการส่งผลกระทบต่อ repos อื่น
bryanmac

และมันจะมีประโยชน์มากเมื่อคุณไม่สามารถเรียกใช้คำสั่ง git ได้! (ig มี sourcetree บนเครื่องเสมือน windows และวางโฟลเดอร์ src ในเส้นทาง UNC ซึ่งเทอร์มินัล sorcetree ในตัวไม่สามารถจดจำได้!
danrah

1
ขอบคุณสิ่งนี้ใช้งานได้การแก้ไขบรรทัดคำสั่งไม่ทำงาน
Nrj

สำหรับผู้ใช้ TortoiseGit คุณสามารถแก้ไขส่วนนี้ลงในไฟล์การกำหนดค่าท้องถิ่นโดยทำการอัปเดตการตั้งค่าเฉพาะบริบทและเลือกตัวเลือกเพื่อแก้ไขเฉพาะที่เท่านั้น
Steve Townsend

5

มีวิธีง่ายๆในการกำหนดค่า GIT เพื่อจัดการเซิร์ฟเวอร์ของคุณอย่างถูกวิธี เพียงเพิ่มส่วน http เฉพาะสำหรับเซิร์ฟเวอร์ git ของคุณและระบุใบรับรองที่เข้ารหัส (Base64 ที่เข้ารหัส) เพื่อเชื่อถือ:

~ / .gitconfig

[http "https://repo.your-server.com"]
# windows path use double back slashes
#  sslCaInfo = C:\\Users\\<user>\\repo.your-server.com.cer
# unix path to certificate (Base64 encoded)
sslCaInfo = /home/<user>/repo.your-server.com.cer

วิธีนี้คุณจะไม่มีข้อผิดพลาด SSL อีกต่อไปและตรวจสอบใบรับรองที่ลงชื่อด้วยตัวเอง (ปกติ) นี่เป็นวิธีที่ดีที่สุดที่จะไปเพราะปกป้องคุณจากการโจมตีจากคนกลาง เมื่อคุณปิดใช้งานการตรวจสอบ ssl คุณจะมีความเสี่ยงต่อการถูกโจมตีประเภทนี้

https://git-scm.com/docs/git-config#git-config-httplturlgt


5

หากคุณต้องปิดใช้งานการตรวจสอบ SSL สำหรับเซิร์ฟเวอร์ git หนึ่งโฮสต์ที่เก็บหลายแห่งคุณสามารถเรียกใช้:

git config --bool --get-urlmatch http.sslverify https://my.bad.server false

(หากคุณยังใช้ git <v1.8.5 ให้รันgit config --global http.https://my.bad.server.sslVerify false)

คำอธิบายจากเอกสารที่คำสั่งอยู่ท้ายแสดง .gitconfigเนื้อหาที่ดูเหมือน:

[http "https://my.bad.server"]
        sslVerify = false

มันจะไม่สนใจการตรวจสอบใบรับรองใด ๆ สำหรับเซิร์ฟเวอร์นี้ไม่ว่าจะเป็นที่เก็บใด

คุณมีคำอธิบายบางอย่างในรหัสด้วย


4

สิ่งนี้ใช้ได้กับฉัน:

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

2

คำถามนี้ยังคงเกิดขึ้นและฉันยังไม่พบผลลัพธ์ที่น่าพึงพอใจดังนั้นนี่คือสิ่งที่ใช้ได้กับฉัน (ตามคำตอบก่อนหน้าhttps://stackoverflow.com/a/52706362/1806760ซึ่งไม่ทำงาน):

เซิร์ฟเวอร์ของฉันhttps://gitlab.devใช้ใบรับรองแบบลงนามด้วยตนเอง

เรียกใช้ครั้งแรกgit config --system --edit(จากพรอมต์คำสั่งยกระดับเปลี่ยน--systemเป็น--globalหากคุณต้องการทำเพื่อผู้ใช้ของคุณเท่านั้น) จากนั้นใส่ข้อมูลโค้ดต่อไปนี้หลังจาก[http]ส่วนก่อนหน้าใด ๆ:

[http "https://gitlab.dev"]
        sslVerify = false

จากนั้นตรวจสอบว่าคุณทำทุกอย่างถูกต้องหรือไม่:

> git config --type=bool --get-urlmatch http.sslVerify https://gitlab.dev
false

1

สำหรับ windows ถ้าคุณต้องการกำหนดค่าส่วนกลางให้เรียกใช้

git config --global http.sslVerify false

OP ขอspecific reposอย่างชัดเจน
malat

0

บน Linux ถ้าคุณเรียกสิ่งนี้ภายในโฟลเดอร์ที่เก็บ git:

git config http.sslVerify false

สิ่งนี้จะเพิ่มsslVerify = falseใน[http]ส่วนของconfigไฟล์ใน.gitโฟลเดอร์ซึ่งอาจเป็นวิธีแก้ปัญหาหากคุณต้องการเพิ่มสิ่งนี้ด้วยตนเองด้วยnano .git/config:

...
[http]
  sslVerify = false
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.