ไม่สามารถแก้ไข“ ไม่สามารถรับใบรับรองผู้ออกในท้องถิ่น” โดยใช้ git บน Windows ด้วยใบรับรองที่ลงชื่อด้วยตนเอง


283

ฉันใช้ Git บน Windows ฉันติดตั้งแพ็คเกจ msysGit ที่เก็บการทดสอบของฉันมีใบรับรองแบบลงนามด้วยตนเองที่เซิร์ฟเวอร์ ฉันสามารถเข้าถึงและใช้พื้นที่เก็บข้อมูลโดยใช้ HTTP โดยไม่มีปัญหา การย้ายไปที่ HTTPS ทำให้เกิดข้อผิดพลาด:

ปัญหาใบรับรอง SSL: ไม่สามารถรับใบรับรองผู้ออกในท้องถิ่น

ฉันมีใบรับรองแบบลงนามด้วยตนเองติดตั้งใน Trusted Root Certificate Authorities ของ Windows 7 ของฉัน - เครื่องไคลเอ็นต์ ฉันสามารถเรียกดู URL ที่เก็บ HTTPS ใน Internet Explorer โดยไม่มีข้อความแสดงข้อผิดพลาด

บล็อกโพสต์นี้โดย Philip Kelleyอธิบายว่า cURL ไม่ได้ใช้ที่เก็บใบรับรองของเครื่องไคลเอนต์ ฉันทำตามคำแนะนำของบล็อกโพสต์เพื่อสร้างสำเนาส่วนตัวของcurl-ca-bundle.crtและกำหนดค่า Git ให้ใช้ ฉันแน่ใจว่า Git ใช้สำเนาของฉัน หากฉันเปลี่ยนชื่อสำเนา Git บ่นไฟล์หายไป

ฉันวางในใบรับรองของฉันตามที่กล่าวไว้ในโพสต์บล็อกฉันยังคงได้รับข้อความ "ไม่สามารถรับใบรับรองผู้ออกใบรับรองท้องถิ่น"

ฉันตรวจสอบว่า Git ยังคงทำงานโดยการโคลนที่เก็บ GitHub ผ่าน HTTPS

สิ่งเดียวที่ฉันเห็นว่าแตกต่างจากบล็อกโพสต์คือใบรับรองของฉันคือราก - ไม่มีห่วงโซ่ในการเข้าถึง ใบรับรองของฉันมาจากการคลิกที่ลิงค์ IIS8 IIS Manager 'สร้างใบรับรองที่ลงชื่อด้วยตนเอง' บางทีนั่นอาจทำให้ใบรับรองแตกต่างไปจากที่คาดไว้ในทางใดทางหนึ่ง

ฉันจะรับ Git / cURL เพื่อรับใบรับรองที่ลงชื่อด้วยตนเองได้อย่างไร



1
ตรวจสอบด้วยว่าเครือข่ายท้องถิ่นของคุณได้รับอนุญาตให้ส่งไฟล์ไปยังที่เก็บ github หรือไม่ อาจมีข้อ จำกัด ของไฟร์วอลล์หรือโปรแกรมป้องกันไวรัส
shasi kanth

ถ้าใครใบหน้าข้อผิดพลาดนี้ในขณะที่ใช้ Bower สร้างแฟ้ม .bowerrc { "strict-ssl": false }ที่มีเนื้อหา ไม่ต้องขอบคุณฉันขอบคุณผู้ชายคนนี้: stapp.space/fight-with-2ฉันเคยต่อสู้กับข้อผิดพลาดนี้มาเกือบ 5 ชั่วโมงแล้วตรง !!
Ganesh Jadhav

คำตอบ:


267

เปิด Git Bash และเรียกใช้คำสั่งหากคุณต้องการปิดใช้งานการตรวจสอบ SSL อย่างสมบูรณ์

git config --global http.sslVerify false

หมายเหตุ: การแก้ปัญหานี้อาจจะเปิดให้คุณโจมตีเช่นการโจมตีคน-in-the-กลาง ดังนั้นเปิดการตรวจสอบอีกครั้งโดยเร็วที่สุด:

git config --global http.sslVerify true

70
คำตอบนี้เอาชนะความปลอดภัยของ SSL โดยอนุญาตให้มีการโจมตีจากคนกลาง คำตอบอื่น ๆ ได้อธิบายวิธีกำหนดค่า git ให้ไว้วางใจใบรับรองเฉพาะที่คุณต้องการ
dsh

12
คำตอบที่น่ากลัวจริง ๆ คุณไม่ได้บอกให้พวกเขาเปิด SSL อีกครั้ง นี่คือสาเหตุที่ช่องโหว่ด้านความปลอดภัยเกิดขึ้น
Edgar Aroutiounian

หากคุณใช้ Gitblit ไม่มีตัวเลือกอื่นแทนการทำ sshVerify false
กลั้ว

24
หากต้องการปิดใช้งานการตรวจสอบ TLS / SSL สำหรับคำสั่ง git เดียวให้ใช้คำสั่งต่อไปนี้:git -c http.sslVerify=false clone https://domain.com/path/to/git
Maxim Suslov

1
มีวิธีแก้ปัญหาหลายประการที่ให้ไว้ด้านล่างและฉันได้แนะนำข้อเสียแล้ว ดังนั้นขึ้นอยู่กับคุณว่าคุณกำลังเลือกแนวทางแก้ไขปัญหาใดเพื่อแก้ไขปัญหา
กลั้ว

153

ปัญหาคือ git นั้นโดยค่าเริ่มต้นโดยใช้แบ็กเอนด์ crypto "Linux"

เริ่มต้นด้วย Git สำหรับ Windows 2.14 ตอนนี้คุณสามารถกำหนดค่า Git ให้ใช้ SChannel ซึ่งเป็นเลเยอร์เครือข่าย Windows ในตัวเป็นแบ็คเอนด์ crypto ซึ่งหมายความว่าคุณจะใช้กลไกการจัดเก็บใบรับรอง Windows และคุณไม่จำเป็นต้องกำหนดค่ากลไกการจัดเก็บ curl CA อย่างชัดเจน: https://msdn.microsoft.com/en-us/library/windows/desktop/aa380123(v= VS.85) .aspx

เพิ่งดำเนินการ:

git config --global http.sslbackend schannel

ที่ควรช่วย

ตอนนี้การใช้ schannel นั้นเป็นการตั้งค่ามาตรฐานเมื่อทำการติดตั้ง git สำหรับ windows และขอแนะนำว่าอย่าทำการเช็กเอาต์ที่เก็บข้อมูลของ SSH อีกถ้าเป็นไปได้เนื่องจาก https ง่ายต่อการกำหนดค่าและมีโอกาสถูกบล็อกโดยไฟร์วอลล์น้อยลง


1
โปรดทราบว่าวิธีนี้อาจทำให้git config --global http.sslCAInfo <my-server-self-signed-cert.pem>การทำงานล้มเหลว ผมกำหนดค่าhttp.sslCAInfoการใช้ใบรับรองลงนามด้วยตนเองสำหรับเซิร์ฟเวอร์ของฉันและมันเป็นเหตุผลที่ (อาจจะไม่เป็นเช่นเดียวกับ OP) ที่ฉันพบ "ปัญหา SSL Certificate: ไม่สามารถที่จะได้รับการรับรองจาก บริษัท ผู้ออกหลักทรัพย์ท้องถิ่น" git clone https://github.com/Microsoft/vscode.gitเมื่อฉันทำเช่น ในที่สุดฉันก็ใช้คำตอบจากstackoverflow.com/a/47196562/1323552 (Ben PP Tung) เพื่อปรับแต่ง sslCAInfo config ของฉันเฉพาะกับเซิร์ฟเวอร์ git ของฉันเพื่อแก้ปัญหา
Johnny Wong

94

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

สิ่งที่ฉันต้องทำคือปิดใช้งานการตรวจสอบ SSL (ตามที่กล่าวถึงในบทความ) สำหรับ Git โดยรวม ไม่ใช่ทางออกที่สมบูรณ์แบบ แต่มันจะใช้ได้จนกว่าฉันจะสามารถหาวิธีที่ดีกว่าได้

ฉันแก้ไขไฟล์ข้อความ Git config (ด้วยแอพที่เป็นกลางที่โปรดปรานของฉันเช่น Notepad ++) ที่:

C: \ Program Files (x86) \ Git \ etc \ gitconfig

ในบล็อก [http] ฉันได้เพิ่มตัวเลือกเพื่อปิดการใช้งาน sslVerify ดูเหมือนว่าเมื่อฉันทำเสร็จ:

[http]
    sslVerify = false
    sslCAinfo = /bin/curl-ca-bundle.crt

นั่นเป็นการหลอกลวง

บันทึก:

  • นี่เป็นการปิดใช้งานการตรวจสอบ SSL และไม่แนะนำให้ใช้เป็นวิธีแก้ปัญหาระยะยาว

  • คุณสามารถปิดการใช้งานพื้นที่เก็บข้อมูลนี้ซึ่งยังไม่ดี แต่ตั้งค่าท้องถิ่นให้เหมาะสม

  • ด้วยการถือกำเนิดของ LetsEncrypt.org ตอนนี้มันค่อนข้างง่ายอัตโนมัติและอิสระในการตั้งค่า SSL เป็นทางเลือกแทน certs ที่ลงชื่อด้วยตนเองและปฏิเสธความต้องการที่จะปิด sslVerify


145
นี่เป็นการเอาชนะวัตถุประสงค์ของ SSL
syaz

49
คุณสามารถใช้คำสั่ง "git config --global http.sslVerify false" เพื่อปิดการตรวจสอบ SSL
CleanCoder

6
ขอขอบคุณที่ชี้sslCAinfoรายการการกำหนดค่าออก แต่ฉันไม่ได้ upvoting คำตอบเพราะมันไม่เหมาะสมที่จะปิด SSL สำหรับระบบคอมไพล์อย่างถาวร (คุณได้ลองปิดการใช้งานทั้งระบบแล้วทำการโคลนแล้วเปิดใช้งานอีกครั้งแล้วปิดการใช้งานใน การกำหนดค่า git ท้องถิ่นสำหรับ repo ที่เพิ่งโคลน?)
7heo.tk

35
สำหรับคำสั่งใช้ครั้งเดียวไม่จำเป็นต้องเปลี่ยนไฟล์กำหนดค่า:git -c http.sslVerify=false clone https://...
pts

8
แก้ไขได้ดีกว่าที่นี่: blogs.msdn.microsoft.com/phkelley/2014/01/20/…
Warren P

51

kiddaileyฉันคิดว่าค่อนข้างใกล้ แต่ฉันจะไม่ปิดการใช้งานการตรวจสอบ ssl แต่ให้ส่งใบรับรองท้องถิ่น:

ในไฟล์ Git config

[http]
    sslCAinfo = /bin/curl-ca-bundle.crt

หรือผ่านทางบรรทัดคำสั่ง:

git config --global http.sslCAinfo /bin/curl-ca-bundle.crt

7
บนคอมไพล์สำหรับ windows นี่คือgit config --global http.sslCAinfo /usr/ssl/certs/ca-bundle.crt
Karsten Tinnefeld

หรือสำหรับฉันgit config --global http.sslCAinfo /c/Program\ Files\ \(x86\)/Git/bin/curl-ca-bundle.crt
กระจอก

สำหรับผู้ใช้บนgit config --global http.sslCAinfo /opt/local/share/curl/curl-ca-bundle.crt
MacPort

3
ด้วย Git 2.8 คุณสามารถใช้git config --list --show-originเพื่อดูที่ http.sslCAinfo การกำหนดค่าการตั้งค่า
Anish

ตำแหน่งใบรับรองของฉันบน mac คือ: ~ / macports / share / curl / curl-ca-bundle.crt
3282611

47

ฉันประสบปัญหานี้เช่นกัน และในที่สุดก็ได้รับการแก้ไขโดยรับคำแนะนำจากบล็อก MSDNนี้

ปรับปรุง

ที่จริงคุณต้องเพิ่มใบรับรองในไฟล์ใบรับรองของ git curl-ca-bundel.cert ที่อยู่ในไดเรกทอรี Git \ bin

ขั้นตอน

  1. เปิดหน้า GitHub ของคุณในเบราว์เซอร์และคลิกที่ไอคอนล็อคในแถบที่อยู่
  2. ในป๊อปอัปเล็ก ๆ ที่เปิดขึ้นนำทางไปยังลิงก์ 'ดูใบรับรอง' มันจะเปิดหน้าต่างป๊อปอัป
  3. ซึ่งไปที่แท็บใบรับรอง (อันดับ 3 ในกรณีของฉัน) เลือกโหนดบนสุดที่เป็นใบรับรองรูท และกดปุ่มคัดลอกใบรับรองที่ด้านล่างและบันทึกไฟล์
  4. ใน file explorer นำทางไดเรกทอรี Git \ bin และเปิด curl-ca-bundle.crt ในโปรแกรมแก้ไขข้อความ
  5. เปิดไฟล์ใบรับรองที่ส่งออก (ในขั้นตอนที่ 3) ในเท็กซ์เอดิเตอร์เช่นกัน
  6. คัดลอกเนื้อหาทั้งหมดจากใบรับรองที่ส่งออกไปยังจุดสิ้นสุดของ curl-ca-bundle.crt และบันทึก

ในที่สุดตรวจสอบสถานะ โปรดทราบว่าไฟล์สำรองข้อมูล curl-ca-bundle.crt ก่อนที่จะแก้ไขเพื่อให้ยังคงปลอดภัย


3
"นำทางไดเรกทอรี Git \ bin และเปิด curl-ca-bundle.crt" ไม่มี curl-ca-bundle.crt ใน git \ bin!
Anton K

@AntonK หากไม่มีอยู่ให้สร้างด้วยตัวคุณเองใน notepad และเปลี่ยนชื่อใหม่ด้วย curl-ca-bundle.crt ขั้นตอนอื่น ๆ ยังคงเหมือนเดิม
Nadeem Jamali

16
@AntonK มันอาจจะเรียกว่าเพียงca-bundle.crtและอยู่ในหรือmingw64\ssl\certs mingw32\ssl\certs
Ian Kemp

ใช้สิ่งนี้สำหรับ SourceTree ของ Atlassian การติดตั้ง GIT ที่รวมอยู่ใน% userprofile% \ appdata \ local \ attlassian \ sourcetree \ git_local curl-ca-bundle.crt มีอยู่แล้วต่อท้ายใบรับรองหลักที่ส่งออกที่เข้ารหัส base64 ของฉัน
Xanothos

40

คำตอบสำหรับคำถามนี้การใช้ makecert เพื่อการพัฒนา SSL ได้แก้ไขสิ่งนี้ให้ฉัน

ฉันไม่รู้ว่าทำไม แต่ใบรับรองที่สร้างขึ้นโดยลิงก์ 'สร้างใบรับรองที่ลงชื่อด้วยตนเอง' อย่างง่ายในตัวจัดการ IIS ไม่ได้หลอกลวง ฉันทำตามวิธีการในคำถามที่เชื่อมโยงของการสร้างและติดตั้ง CA Root ที่ลงชื่อด้วยตนเอง จากนั้นใช้สิ่งนั้นเพื่อออกใบรับรองการตรวจสอบเซิร์ฟเวอร์สำหรับเซิร์ฟเวอร์ของฉัน ฉันติดตั้งทั้งสองอย่างใน IIS

นั่นทำให้สถานการณ์ของฉันเหมือนกับโพสต์บล็อกที่อ้างอิงในคำถามเดิม เมื่อใบรับรองหลักถูกคัดลอก / วางใน curl-ca-bundle.crt คำสั่งผสม git / curl ก็พอใจ


"ฉันไม่รู้ว่าทำไม แต่ใบรับรองที่สร้างขึ้นโดยลิงก์ 'สร้างใบรับรองที่ลงชื่อด้วยตนเอง' อย่างง่ายใน IIS Manager ไม่ได้ทำเคล็ดลับ ... " - วิธีที่ดีที่สุดที่ฉันสามารถบอกได้คือสร้างใบรับรองที่มีรูปแบบไม่ถูกต้อง มีกฎมากมายเมื่อสร้างใบรับรอง X.509 "ทำขั้นต่ำเพื่อให้ทำงานได้" ไม่ทำงานได้ดีอีกต่อไป โปรดดูเพิ่มเติมที่คุณเซ็นชื่อคำขอลงนามใบรับรองกับผู้ให้บริการออกใบรับรองของคุณและวิธีสร้างใบรับรองที่ลงนามด้วยตนเองด้วย openssl ได้อย่างไร
jww

สิ่งนี้ใช้งานได้สำหรับฉัน แต่ฉันได้วางสายในส่วน "ฉันติดตั้งทั้งสองอย่างใน IIS" ชั่วคราว ในการ clairfy สำหรับคนอื่น ๆ ... ใบรับรองเซิร์ฟเวอร์ถูกกำหนดใน IIS และรูท CA ต้องถูกนำเข้าไปยัง "Trusted Root Certification Authorities" ผ่านทางยูทิลิตี้ตัวจัดการใบรับรองของ Windows (certmgr.msc)
Philip

26

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

git config --global http.https://the.host.com/.sslCAInfo c:/users/me/the.host.com.cer

หากไม่ได้ผลคุณสามารถปิดใช้งานการตรวจสอบ ssl สำหรับโฮสต์เท่านั้น :

git config --global http.https://the.host.com/.sslVerify false

หมายเหตุ: ขึ้นอยู่กับคนที่เป็นไปได้ในการโจมตีตรงกลางเมื่อปิดการตรวจสอบ ssl


4
อาจเป็นเรื่องที่น่าสังเกตว่า--globalตัวเลือกนั้นไม่จำเป็น: หากคุณข้าม--globalไปการตั้งค่าจะใช้กับ repo git นั้นเท่านั้น
Wes Turner

19

ฉันเพิ่งมีปัญหาเดียวกัน แต่ใช้ sourcetree บน windows ขั้นตอนเดียวกันสำหรับ GIT ปกติบน Windows เช่นกัน ทำตามขั้นตอนต่อไปนี้ฉันสามารถแก้ไขปัญหานี้ได้

  1. รับแผนผังใบรับรองเซิร์ฟเวอร์สามารถทำได้โดยใช้ chrome นำทางไปยังที่อยู่เซิร์ฟเวอร์ คลิกที่ไอคอนรูปกุญแจและดูใบรับรอง ส่งออกห่วงโซ่ใบรับรองทั้งหมดในรูปแบบไฟล์เข้ารหัส base64 (PEM)
  2. เพิ่มใบรับรองลงในเชนความน่าเชื่อถือของไฟล์กำหนดค่าความน่าเชื่อถือ GIT ของคุณเรียกใช้ "git config - รายการ" ค้นหาการกำหนดค่า "http.sslcainfo" ซึ่งจะแสดงตำแหน่งของไฟล์ที่ไว้วางใจใบรับรอง คัดลอกใบรับรองทั้งหมดลงในไฟล์เชนที่เชื่อถือได้ซึ่งรวมถึง "- -BEGIN- -" และ "- -END- -"
  3. ตรวจสอบให้แน่ใจว่าคุณเพิ่มเชนใบรับรองทั้งหมดลงในไฟล์ใบรับรอง

สิ่งนี้ควรแก้ปัญหาของคุณด้วยใบรับรองที่ลงชื่อด้วยตนเองและการใช้ GIT

ฉันพยายามใช้การกำหนดค่า "http.sslcapath" แต่ไม่ได้ผล นอกจากนี้หากฉันไม่ได้รวมสายโซ่ทั้งหมดในไฟล์ใบรับรองสิ่งนี้จะล้มเหลว หากใครมีตัวชี้เหล่านี้โปรดแจ้งให้เราทราบเพราะข้างต้นจะต้องทำซ้ำสำหรับการติดตั้งใหม่

หากนี่คือระบบ GIT คุณสามารถใช้ตัวเลือกใน TOOLS -> แท็บตัวเลือก GIt เพื่อใช้ระบบ GIT แล้วแก้ไขปัญหาใน sourcetree ได้เช่นกัน


2
"ถ้าฉันไม่ได้รวมห่วงโซ่ทั้งหมดในไฟล์ใบรับรองแล้วสิ่งนี้ก็จะล้มเหลว" - ฉันเพิ่งพบปัญหานี้
Amani Kilumanga

เท่าที่รวมทั้งห่วงโซ่ฉันมีสอง certs เหนือ github cert ฉันจะรวมพวกเขาตามลำดับเป็น root-> next cert-> github cert ในไฟล์ sslcainfo.crt หรือไม่
Jecoms

ฉันสามารถเข้าถึงแพ็คเกจ repo git ได้โดยการเพิ่ม root Cert
Jecoms

สำหรับผู้อ่านในอนาคต ไม่มีความคิดถ้ามันสำคัญ แต่ฉันใส่ใบรับรอง "root" (บนสุด) ที่ท้ายไฟล์ (http.sslcainfo) และเมื่อฉันออกจากรูตใบรับรองในสายโซ่ฉันวางใบรับรองนั้นไว้เหนือรายการก่อนหน้าของไฟล์ (http.sslcainfo)
granadaCoder

11

ในกรณีของที่เก็บ gitHub (หรือ certs ที่ไม่ได้ลงชื่อเอง)ให้เลือกด้านล่างขณะติดตั้ง Git-on-windows

ป้อนคำอธิบายรูปภาพที่นี่


1
คุณดูเหมือนจะตอบคำถามอื่น คำถามของ OP เกี่ยวข้องกับใบรับรองที่ลงชื่อด้วยตนเองในไคลเอนต์ Windows
jww

@ jww ชื่อคำถามคือข้อความแสดงข้อผิดพลาด git ที่ปรากฏแม้ว่า repo ไม่ใช่ SSL ที่ลงชื่อด้วยตนเอง!
Jawad Al Shaikh

นี่ทำให้ฉันได้รับข้อผิดพลาด แต่สำหรับฉันในการเข้าถึง GitHub Enterprise จำเป็นต้องสร้างคีย์และการเพิ่มคีย์สาธารณะ / ส่วนตัว
ΩmegaMan

1
หากใบรับรองที่ลงนามด้วยตนเองได้ถูกใส่ลงในที่เก็บใบรับรอง windows โดยผู้ดูแลระบบ windows ที่เป็นประโยชน์ผ่านนโยบายกลุ่มแล้วคำตอบนี้ก็เป็นคำตอบที่ดีเช่นกัน
JamesD

7

ฉันมีปัญหานี้มาก่อนและแก้ปัญหาโดยใช้การกำหนดค่าต่อไป

[http "https://your.domain"] sslCAInfo=/path/to/your/domain/priviate-certificate

ตั้งแต่ git 2.3.1 คุณสามารถใส่https://your.domainhttp หลังจากนั้นเพื่อระบุว่าใบรับรองต่อไปนี้มีไว้สำหรับมันเท่านั้น


1
นี่เป็นวิธีที่ง่ายที่สุดและแม่นยำที่สุดที่ฉันพบถ้าคุณตั้งค่าไว้git config --global http.sslCAInfo <your-server-self-signed-cert.pem>ก่อนหน้านี้ (ด้วยเหตุนี้ทำให้เกิดข้อผิดพลาด "ไม่สามารถรับใบรับรองผู้ออกในท้องถิ่น")
Johnny Wong

นี่เป็นคำตอบที่ถูกต้องสำหรับปัญหาของฉัน (ไม่ใช่เพียงแค่ "ปิดใช้งานการตรวจสอบความถูกต้องของ SSL" ~~) ไม่ทราบว่าคุณสามารถระบุตำแหน่งใบรับรองสำหรับโฮสต์ที่ระบุเท่านั้น Ace!
RocíoGarcía Luque


1

สิ่งหนึ่งที่ทำให้ฉันสับสนคือรูปแบบของเส้นทาง (บนพีซี Windows ของฉัน) ฉันเคยมีสิ่งนี้:

git config --global http.sslCAInfo C:\certs\cacert.pem

แต่นั่นล้มเหลวด้วยข้อผิดพลาด "ไม่สามารถรับใบรับรองผู้ออกในท้องถิ่น"

สิ่งที่ใช้ได้ผลที่สุดคือ:

git config --global http.sslCAInfo "C:\\certs\\cacert.pem"

1

ในกรณีของฉันเนื่องจากฉันได้ติดตั้งเทอร์มินัล ConEmuสำหรับ Window 7 มันจะสร้างca-bundleระหว่างการติดตั้งที่C:\Program Files\Git\mingw64\ssl\certsระหว่างการติดตั้งที่

ดังนั้นฉันต้องเรียกใช้คำสั่งต่อไปนี้บนเทอร์มินัลเพื่อให้ทำงานได้:

$ git config --global http.sslbackend schannel
$ git config --global http.sslcainfo /mingw64/ssl/certs/ca-bundle.crt

ดังนั้นฉันC:\Program Files\Git\etc\gitconfigมีต่อไปนี้:

[http]
    sslBackend = schannel
    sslCAinfo = /mingw64/ssl/certs/ca-bundle.crt

นอกจากนี้ฉันเลือกตัวเลือกเดียวกับที่กล่าวถึงที่นี่เมื่อติดตั้ง Git

หวังว่าจะช่วย!


1

ในการแก้ไขปัญหาข้อผิดพลาดเฉพาะใบรับรอง SSL: ไม่สามารถรับใบรับรองผู้ออกในระบบได้ในคอมไพล์

ฉันมีปัญหาเดียวกันกับ Let's Encrypt certificate

เว็บไซต์ที่มี https เราเพียงต้องการ:

SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf

แต่ git pull พูดว่า:

fatal: unable to access 'https://example.com/git/demo.git/': SSL certificate problem: unable to get local issuer certificate

ในการแก้ไขเราจำเป็นต้องเพิ่มด้วย:

SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem

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