ฉันต้องใช้เซิร์ฟเวอร์ git ที่ไม่มีใบรับรองที่ถูกต้อง แต่ฉันไม่ต้องการทำ
env GIT_SSL_NO_VERIFY=true git command
ทุกครั้งที่ฉันทำการคอมไพล์ แต่ฉันยังต้องการเปิดใช้งาน SSL สำหรับที่เก็บ git อื่น มีวิธีทำให้ท้องถิ่นนี้เป็น repo เดียวหรือไม่?
ฉันต้องใช้เซิร์ฟเวอร์ git ที่ไม่มีใบรับรองที่ถูกต้อง แต่ฉันไม่ต้องการทำ
env GIT_SSL_NO_VERIFY=true git command
ทุกครั้งที่ฉันทำการคอมไพล์ แต่ฉันยังต้องการเปิดใช้งาน SSL สำหรับที่เก็บ git อื่น มีวิธีทำให้ท้องถิ่นนี้เป็น repo เดียวหรือไม่?
คำตอบ:
คุณทำได้
git config http.sslVerify false
ใน repo เฉพาะของคุณเพื่อปิดใช้งานการตรวจสอบใบรับรอง SSL สำหรับ repo นั้นเท่านั้น
--global
ตัวเลือกจะต้องใช้เมื่อ repo ยังไม่ได้ชำระเงิน (ไม่สามารถตั้งค่าตัวเลือกสำหรับ repo ที่ยังไม่มีอยู่ในเครื่อง) เราสามารถเปิดใช้งานได้อีกครั้งหลังจากนั้น
คุณสามารถทำได้ดังนี้
สำหรับ repo เดียว
git config http.sslVerify false
สำหรับซื้อคืนทั้งหมด
git config --global http.sslVerify false
sudo
ควรใช้เมื่อคุณต้องการรูทเพื่อทำบางสิ่งเท่านั้น เช่นเดียวกับการติดตั้งซอฟต์แวร์ใหม่การแก้ไขไฟล์ระบบที่สำคัญฟอร์แมตไดรฟ์การกำหนดค่าเครือข่ายใหม่จัดการบริการ ... ไม่มีอะไรในคำถามของผู้ชายคนนี้ที่บอกว่าเขาต้องการรูทเพื่อทำอะไร หากคุณเป็นผู้ดูแลระบบคุณควรใช้คำสั่งส่วนใหญ่รวมถึงคำสั่งที่เปลี่ยนการกำหนดค่าโดยไม่ต้องใช้ sudo เป็นส่วนใหญ่
ชอบสิ่งที่ Thirumalai กล่าวว่า --global
แต่ภายในของพื้นที่เก็บข้อมูลโคลนและไม่มี กล่าวคือ
GIT_SSL_NO_VERIFY=true git clone https://url
cd <directory-of-the-clone>
git config http.sslVerify false
could not lock global config file .gitconfig: Permission denied
/var/www/...
โดยเฉพาะอย่างยิ่งถ้าคุณต้องการโคลนซ้ำ
GIT_SSL_NO_VERIFY=true git clone --recursive https://github.com/xx/xx.git
หากคุณอยู่ในเครื่อง Windows และติดตั้ง Git ไว้คุณสามารถลองทำตามขั้นตอนด้านล่าง:
ในส่วน[http]ให้เพิ่มบรรทัด: sslVerify = false
[http]
sslVerify = false
มีวิธีง่ายๆในการกำหนดค่า 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 คุณจะมีความเสี่ยงต่อการถูกโจมตีประเภทนี้
หากคุณต้องปิดใช้งานการตรวจสอบ 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
มันจะไม่สนใจการตรวจสอบใบรับรองใด ๆ สำหรับเซิร์ฟเวอร์นี้ไม่ว่าจะเป็นที่เก็บใด
คุณมีคำอธิบายบางอย่างในรหัสด้วย
สิ่งนี้ใช้ได้กับฉัน:
git init
git config --global http.sslVerify false
git clone https://myurl/myrepo.git
คำถามนี้ยังคงเกิดขึ้นและฉันยังไม่พบผลลัพธ์ที่น่าพึงพอใจดังนั้นนี่คือสิ่งที่ใช้ได้กับฉัน (ตามคำตอบก่อนหน้า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
สำหรับ windows ถ้าคุณต้องการกำหนดค่าส่วนกลางให้เรียกใช้
git config --global http.sslVerify false
specific repos
อย่างชัดเจน
บน Linux ถ้าคุณเรียกสิ่งนี้ภายในโฟลเดอร์ที่เก็บ git:
git config http.sslVerify false
สิ่งนี้จะเพิ่มsslVerify = false
ใน[http]
ส่วนของconfig
ไฟล์ใน.git
โฟลเดอร์ซึ่งอาจเป็นวิธีแก้ปัญหาหากคุณต้องการเพิ่มสิ่งนี้ด้วยตนเองด้วยnano .git/config
:
...
[http]
sslVerify = false