ดูเหมือนว่า Git จะรู้จักคุณสมบัติ http.sslcainfo จาก. gitconfig แต่ไม่สนใจในการประมวลผลหรือไม่ SEC_E_UNTRUSTED_ROOT


10

ทั้งหมดฉันมีห่วงโซ่ใบรับรองที่ใช้งานได้ (ทดสอบได้กับ OpenSSL) แต่อย่างใดฉันไม่สามารถจัดการเพื่อบอก Git ให้โหลดใบรับรองเหล่านี้ได้

ฉันจะได้รับเหมือนกัน "ผู้มีอำนาจรากที่ไม่น่าเชื่อถือ" ข้อผิดพลาด (SEC_E_UNTRUSTED_ROOT) อิสระว่าจุดที่กำหนดค่าคอมไพล์ของฉันไปยังไฟล์หรือห่วงโซ่ใบรับรองปลอมที่มีอยู่

สำหรับรายละเอียดโปรดตรวจสอบภาพหน้าจอที่แนบมาป้อนคำอธิบายรูปภาพที่นี่

การตั้งค่าที่ฉันใช้.gitconfigเป็นไฟล์ปลอม:

sslCAInfo = C:/tmp/foobar.crt

หรือสำหรับไฟล์จริงที่ทำงานกับ OpenSSL:

sslCAInfo = C:/tmp/ca-bundle.crt

ทรานสคริปต์คอนโซล:

C:\tmp>openssl version
OpenSSL 0.9.8h 28 May 2008

C:\tmp>git --version
git version 2.12.2.windows.2

C:\tmp>git config --list
http.sslverify=true
http.sslcainfo=C:/tmp/ca-bundle.crt

C:\tmp>dir
24.04.2017 13:45 10.875 ca-bundle.crt

c:\tmp>openssl s_client -state -connect https://mygithost:443 -CAfile .\ca-bundle.crt

Verify return code: 0 (ok)

C:\tmp git clone https://mygithost/bitbucket/scm/my.git
Cloning into ...
fatal: unable to access ... : schannel: next InitializeSecurityContext failed: SEC_E_UNTRUSTED_ROOT (0x80090325) - The certificate chain was issued by an authority that is not trusted.

C:\tmp> git -c http.sslverify=false clone https://mygithost/bitbucket/scm/my.git
Cloning into ...
Resoliving deltas: 100%, done.

C:\tmp>git config --list
http.sslverify=true
http.sslcainfo=C:/tmp/foobar.crt

C:\tmp\xxx\git pull
fatal: unable to access ... : schannel: next InitializeSecurityContext failed: SEC_E_UNTRUSTED_ROOT (0x80090325) - The certificate chain was issued by an authority that is not trusted.

คุณมีการพิมพ์ผิดในการกำหนดค่าคอมไพล์ของคุณ: tml แทน tmp
Tensibai

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

@Tensibai โปรดให้คำแนะนำหรือลิงค์ไปยังเอกสารไม่แน่ใจว่าจะพิมพ์ออกมาอย่างไร เช่น git config - global - รายการไม่ทำงาน
Peter Muryshkin

Git config ของ --get ทั้งหมดควรจะทำอย่างไรที่จะแสดงให้ทุกคนที่เกิดจากการกำหนดค่าของระบบโลกและท้องถิ่น (ไม่สามารถตรวจสอบฉันบนโทรศัพท์และนั่นเป็นเพียงการคาดเดาวิธีแก้ไขปัญหาที่อาจจะset SSL_CERT_FILE=C:\tmp\ca-bundle.crtจะบอก OpenSSL ที่จะหามัด
Tensibai

C:\git config --get-all-- => error: wrong number of arguments
Peter Muryshkin

คำตอบ:


2

เคยถูกมันมาวันนี้หลังจากการติดตั้งใหม่ดังนั้นนี่คือวิธีที่ฉันได้รับมัน:

จากบันทึกของคุณ (เน้นเป็นของฉัน):

ร้ายแรง: ไม่สามารถเข้าถึง ... : schannel : ถัดไป InitializeSecurityContext ล้มเหลว:

git ได้รับการกำหนดค่าให้ใช้ schannel (การใช้งานแบบเนทีฟของ windows) แต่ schannel ใช้ชุดคำสั่ง windows certs และไม่ใช่กลุ่ม cainfo

หากต้องการเปลี่ยนเป็น openssl เพื่อใช้ไฟล์บันเดิลแบบกำหนดเองให้ใช้สิ่งนี้:

git config --system http.sslbackend openssl

และตอนนี้คอมไพล์จะให้เกียรติกลุ่ม CA ที่ส่งผ่านใน http.sslcainfo

อีกทางเลือกหนึ่งเนื่องจากข้อผิดพลาดของฉันเป็นปัญหาของชุด cypher คุณอาจสนใจโดยลิงค์ต่อไปนี้:


1

ฉันมีสิ่งที่คล้ายกันเมื่อปีที่แล้วดังนั้นฉันหวังว่าฉันจะจำได้ -

คุณควรมีห่วงโซ่ใบรับรองทั้งหมดในไฟล์ crt ตรวจสอบว่าคุณมีใบรับรองกลางทั้งหมดระหว่างใบรับรอง bitbucket ของคุณและรูทหนึ่ง (รวมอยู่ด้วย)

คุณสามารถดูได้ที่รูปแบบที่ถูกต้องสำหรับการผนวกไว้ในรูปแบบพีอีเอ็ม (ซึ่งผมเชื่อว่าเป็นกรณีของคุณกับจอ CRT) มากกว่าที่นี่

ใบรับรองของฉันถูกลงนามโดย Comodo เมื่อฉันมีปัญหานั้นใบรับรองของพวกเขาและสื่อกลางไม่ได้อยู่ในชุดเริ่มต้น ca-bundle ที่มาจากระบบส่วนใหญ่

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

แก้ไข:ตอนนี้ฉันสังเกตเห็นว่ามันเกิดขึ้นกับของปลอมด้วย - ลองตรวจสอบใบรับรองที่เป็นค่าเริ่มต้นของระบบ (แต่ละระบบมีเช่นนั้น) ใน Windows คุณสามารถไปที่MMC ใบรับรองของ Windows snap-in

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