ปัญหาใบรับรอง SSL: ใบรับรองที่ลงนามเองในห่วงโซ่ใบรับรอง


0

หลังไฟร์วอลล์โดยใช้โครเมียมฉันสามารถเข้าถึงที่เก็บ github ได้เช่น: https://github.com/Squirrel/Squirrel.Windows

Chrome ใช้ใบรับรองของเราสำหรับการเข้าถึงนี้ หากฉันพยายามเข้าถึง url เดียวกันโดยใช้GitExtensionsฉันจะได้รับข้อผิดพลาดนี้:

ปัญหาใบรับรอง SSL: ใบรับรองที่ลงนามเองในห่วงโซ่ใบรับรอง

ฉันสามารถทำให้ GitExtensions ใช้ใบรับรองของเราเพื่ออนุญาตการเข้าถึงได้หรือไม่

แก้ไข: ข้อมูลเพิ่มเติม:

บนเครื่องของฉันฉันไม่เห็น mysysGit แต่ฉันเห็น mingw / curl ดังนั้นฉันคิดว่า Git ใช้สิ่งเหล่านี้ เห็นได้ชัดว่าสิ่งเหล่านี้ไม่ได้ใช้ใบรับรองความน่าเชื่อถือของ Windows เมื่อสร้างสายโซ่ใบรับรอง ข้อผิดพลาดที่ฉันได้รับปัญหาใบรับรอง S SL: ใบรับรองที่ลงนามเองในห่วงโซ่ใบรับรองบ่งชี้ว่าใบรับรองรูทที่ใช้โดย Git / Github ไม่มีอยู่ในชุดรวมของรูตหน่วยงานผู้ออกใบรับรอง (CA) ในตัว เป็น @Akber Choudhry ได้ชี้ให้เห็นใบรับรอง CA ที่เป็นรูทของเชนของ certs ที่เสิร์ฟโดยเซิร์ฟเวอร์ Github SSL คือ DigiCert High Assurance EV Root CA ที่รูตและฉันเห็น CA ใน C: \ Program Files (x86) \ Git \ bin \ ขด-CA-bundle.crt

เพื่อตรวจสอบว่าปัญหาเกิดขึ้นกับ Git ไม่ใช่ GitExtensions ฉันทำสิ่งนี้ในบรรทัดคำสั่ง:

 >>git clone https://github.com/Squirrel/Squirrel.Windows.git

และได้รับข้อผิดพลาดปัญหาใบรับรอง SSL เดียวกัน

มันทำให้ดูเหมือนว่า Git ไม่ได้ใช้ใบรับรองนี้ดังนั้นฉันจึงลองกำหนดค่า Git ดังนี้

>>git config --system http.sslcainfo "C:\Program Files (x86)\Git\bin\curl-ca-bundle.crt"

แต่นี่ไม่มีผลกระทบ ..


ใบรับรองใดที่ใช้งานจริง คุณกำลังเชื่อมต่อกับตำแหน่งอะไร และคุณแน่ใจ 100% ว่าไม่รับ MitM'ed หรือไม่?
LvB

เราไม่ได้รับ MitM'ed ฉันไม่ใช่คนเครือข่ายที่นี่ แต่ฉันเชื่อว่าใบรับรองเป็นสิ่งที่ซื้อมา ฉันไม่รู้ว่าคุณหมายถึงอะไรเมื่อคุณถามว่ามีการเชื่อมต่อกับตำแหน่งใด
Al Lelopath

คุยกับเครือข่ายคนแรกตรวจสอบการตั้งค่าเซิร์ฟเวอร์ TLS ของคุณ (คุณสามารถใช้เครื่องมือเช่น [ssllabs.com] และเรียนรู้เกี่ยวกับวิธีที่โปรโตคอล HTTP ใช้งานได้จริงเพราะคุณต้องใช้วิธีมากและคุณต้องรู้ สิ่งที่พวกเขาไม่คิด.
LvB

ฉันขอแนะนำให้ตรวจสอบ GitKraken ฉันใช้เพื่อการพัฒนาของฉัน

คำตอบ:


3

หลังไฟร์วอลล์ ... github ... Chrome ใช้ใบรับรองของเราสำหรับการเข้าถึงนี้

จากคำอธิบายนี้ฉันถือว่าใบรับรอง "ของเรา" ไม่ใช่ใบรับรองดั้งเดิมของ Github แต่คุณกำลังใช้ไฟร์วอลล์ที่มีการตรวจสอบ SSL ซึ่งสร้างใบรับรองของตัวเอง ("เรา") ให้กับคนที่อยู่ตรงกลางการเชื่อมต่อ อาจมีการเพิ่ม CA ในไฟร์วอลล์ซึ่งออกใบรับรองนี้ (พร็อกซี CA) ลงใน Windows Trust Store และ Chrome นี้จะเชื่อถือได้

แต่ Git ไม่ได้ใช้ Windows Trust Store ดังนั้นจึงไม่ทราบเกี่ยวกับ CA พร็อกซีนี้ ดังนั้นคุณต้องเพิ่มพร็อกซี CA ที่ใช้โดยไฟร์วอลล์ไปยังที่จัดเก็บ CA สำหรับ Git ไม่ใช่ CA ดั้งเดิมที่ออกใบรับรองสำหรับ Github


ฉันลงเอยด้วย [ทำสิ่งนี้] ซึ่งก็คือ: 1. ทำสำเนาของ curl-ca-bundle.crt 2. คัดลอก / วางDigiCert High Assurance EV Root CAลงในสำเนานี้ 3. ชี้ Git ไปยังสำเนานี้
อัล Lelopath

1

เมื่อคุณใช้โครเมี่ยมและเข้าถึง Github ผ่าน HTTPS คุณเพียงตรวจสอบห่วงโซ่ใบรับรองของ Github กับใบรับรองรูทในตัวในเบราว์เซอร์ของคุณและใน Windows

ภายใต้หน้าปก Gitextensions ใช้ msysgit ซึ่งไม่ปรึกษาใบรับรองความน่าเชื่อถือของ Windows เมื่อสร้างสายโซ่ใบรับรอง

จากข้อผิดพลาดปรากฏว่าใบรับรองรูทที่ใช้โดย Github ไม่มีอยู่ในบันเดิลรูทของผู้ออกใบรับรอง (CA) นี่อาจเป็นเพราะ Gitextensions ที่รวม msysgit หรือ curl รุ่นเก่ากว่า

msysgit รวมDigiCert High Assurance EV Root CAอยู่ในชุดข้อมูล CA และมีมาหลายปีแล้ว ค้นหาสตริงนี้ในไฟล์bin/curl-ca-bundle.crt

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


มองในไฟล์ C: \ Program (x86) \ Git \ bin \ curl-ca-bundle.crt ฉันเห็นว่า CA
อัล Lelopath

คือmysysgitล้าสมัย? มีการกล่าวในหน้านั้นว่า msysGit ถูกแทนที่โดย Git สำหรับ Windows 2.x นอกจากนี้ฉันไม่เข้าใจว่า CA (DigiCert High Assurance EV Root CA) นั้นมีความสำคัญอย่างไร คุณสามารถอธิบาย?
อัล Lelopath

1
ใบรับรอง CA นั้นเป็นรูทของเชนของ certs ที่เสิร์ฟโดยเซิร์ฟเวอร์ github SSL หากลูกค้าของคุณ (เบราว์เซอร์หรือไคลเอนต์ git) มีการกำหนดใบรับรองหลักนั้นมันสามารถตรวจสอบที่มาของใบรับรองอื่น ๆ ในห่วงโซ่ ฉันไม่แน่ใจว่าจะรับชุด CA จากที่ใด แต่ลองเช็ดออกและติดตั้ง Git สำหรับ Windows

คุณช่วยนิยามสิ่งที่คุณหมายถึงโดย "ลบมันออก" ได้ไหม? ฉัน .. "มัน" คืออะไรและฉันจะล้างมันได้อย่างไร
อัล Lelopath

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