Làm thế nào tôi có thể làm cho git chấp nhận một chứng chỉ tự ký?


648

Sử dụng Git, có cách nào để bảo nó chấp nhận chứng chỉ tự ký không?

Tôi đang sử dụng máy chủ https để lưu trữ máy chủ git nhưng hiện tại chứng chỉ đã tự ký.

Khi tôi cố gắng tạo repo ở đó lần đầu tiên:

git push origin master -f

Tôi nhận được lỗi:

error: Cannot access URL     
https://the server/git.aspx/PocketReferences/, return code 22

fatal: git-http-push failed

4
Làm thế nào để bạn biết rằng vấn đề là giấy chứng nhận?
Amber

1
Từ PC thay vì một công cụ Git của người dùng khác cho phép họ bỏ qua chứng chỉ và nó hoạt động. Từ máy Mac, tôi không thể tìm ra cách bỏ qua.
Ian Vink

Lỗi tôi gặp phải, với git 2.1.1: "gây tử vong: không thể truy cập 'https: //.../project.git/': Vấn đề chứng chỉ SSL: chứng chỉ tự ký trong chuỗi chứng chỉ"
Stan Kurdziel

trên OSX / macffy, có vẻ như git sẽ không sử dụng sslcainfotùy chọn này. nếu bạn có thể sử dụng thành công curl --cacertđể kéo đường dẫn repo của mình nhưng git không hoạt động, bạn nên thêm chứng chỉ vào chương trình OSX Keychain bí ẩn. xem thêm tại đây superuser.com/questions/605900/
Mạnh

Tôi thấy tài liệu này rất hữu ích gist.github.com/evantoli/f8c23a37eb3558ab8765
Mofaggol Hoshen

Câu trả lời:


1168

Chấp nhận vĩnh viễn một chứng chỉ cụ thể

Hãy thử http.sslCAPathhoặc http.sslCAInfo. Câu trả lời của Adam Spiers đưa ra một số ví dụ tuyệt vời. Đây là giải pháp an toàn nhất cho câu hỏi.

Để tắt xác minh TLS / SSL cho một lệnh git

hãy thử chuyển -cđến gitvới biến cấu hình phù hợp hoặc sử dụng câu trả lời của Flow :

git -c http.sslVerify=false clone https://example.com/path/to/git

Để vô hiệu hóa xác minh SSL cho một kho lưu trữ cụ thể

Nếu kho lưu trữ hoàn toàn dưới sự kiểm soát của bạn, bạn có thể thử:

git config --global http.sslVerify false

Có khá nhiều tùy chọn cấu hình SSL trong git. Từ trang người đàn ông của git config:

http.sslVerify
    Whether to verify the SSL certificate when fetching or pushing over HTTPS.
    Can be overridden by the GIT_SSL_NO_VERIFY environment variable.

http.sslCAInfo
    File containing the certificates to verify the peer with when fetching or pushing
    over HTTPS. Can be overridden by the GIT_SSL_CAINFO environment variable.

http.sslCAPath
    Path containing files with the CA certificates to verify the peer with when
    fetching or pushing over HTTPS.
    Can be overridden by the GIT_SSL_CAPATH environment variable.

Một vài tùy chọn cấu hình SSL hữu ích khác:

http.sslCert
    File containing the SSL certificate when fetching or pushing over HTTPS.
    Can be overridden by the GIT_SSL_CERT environment variable.

http.sslKey
    File containing the SSL private key when fetching or pushing over HTTPS.
    Can be overridden by the GIT_SSL_KEY environment variable.

http.sslCertPasswordProtected
    Enable git's password prompt for the SSL certificate. Otherwise OpenSSL will
    prompt the user, possibly many times, if the certificate or private key is encrypted.
    Can be overridden by the GIT_SSL_CERT_PASSWORD_PROTECTED environment variable.

40
'git config --global http.sslVerify false' đã thực hiện thủ thuật này. Cảm ơn bạn!
Câu chuyện Chris

110
Bạn không bao giờ nên vô hiệu hóa toàn cầu xác minh chứng chỉ TLS (/ SSL) .
Lưu lượng

4
@Flow - Tôi hoàn toàn đồng tình. Tôi đã chỉnh sửa câu trả lời này (hiện đã khá cũ) để chính xác hơn về việc vô hiệu hóa xác minh chứng chỉ TLS / SSL.
Christopher

8
với tôi điều này đã git -c http.sslVerify=false clone https://domain.com/path/to/gitgiải quyết vấn đề của tôi, cảm ơn ...
Fernando Gomes

2
@Flow Nếu chúng ta đang ở trong một môi trường làm việc mà chủ nhân của chúng ta là MITM , thì có sự thay thế nào cho việc vô hiệu hóa TLS / SSL trên toàn cầu?
Stevoisiak

165

Bạn có thể đặt GIT_SSL_NO_VERIFYthành true:

GIT_SSL_NO_VERIFY=true git clone https://example.com/path/to/git

hoặc thay thế cấu hình Git không để xác minh kết nối trên dòng lệnh:

git -c http.sslVerify=false clone https://example.com/path/to/git

Lưu ý rằng nếu bạn không xác minh chứng chỉ SSL / TLS, thì bạn dễ bị tấn công MitM .


2
Bạn cũng có thể sử dụng -ccờ trên gitđể sửa đổi giá trị cấu hình cho một lệnh. Tôi nghĩ rằng cú pháp này là sạch hơn, mặc dù.
Christopher

1
Ahh, tôi không biết về -cgit. Tôi thực sự nghĩ rằng đó là giải pháp sạch hơn thay vì gây ô nhiễm môi trường. :)
Lưu lượng

1
@SkylarSaveland Lưu ý rằng git -c http.sslVerify=false <gitSubCommand>cũng có thể hoạt động thông qua các trung gian.
Lưu lượng

1
Tôi nên lưu ý rằng giải pháp này mở ra cho bạn các cuộc tấn công trung gian.
omikron

2
Câu trả lời chỉ mô tả tùy chọn kém an toàn nhất .
cp.engr

139

Tôi không phải là một fan hâm mộ lớn của [EDIT: phiên bản gốc của] câu trả lời hiện có, bởi vì vô hiệu hóa kiểm tra bảo mật nên là giải pháp cuối cùng, không phải là giải pháp đầu tiên được đưa ra. Mặc dù bạn không thể tin tưởng các chứng chỉ tự ký vào lần nhận đầu tiên mà không có một số phương pháp xác minh bổ sung, sử dụng chứng chỉ cho các githoạt động tiếp theo ít nhất khiến cuộc sống khó khăn hơn nhiều đối với các cuộc tấn công chỉ xảy ra sau khi bạn đã tải xuống chứng chỉ. Nói cách khác, nếu chứng chỉ bạn đã tải xuống chính hãng, thì bạn sẽ tốt từ thời điểm đó trở đi. Ngược lại, nếu bạn chỉ cần vô hiệu hóa xác minh thì bạn có thể mở rộng cho bất kỳ loại tấn công trung gian nào tại bất kỳ thời điểm nào .

Để đưa ra một ví dụ cụ thể: repo.or.czkho lưu trữ nổi tiếng cung cấp chứng chỉ tự ký . Tôi có thể tải xuống tệp đó, đặt nó ở đâu đó như thế /etc/ssl/certs, và sau đó làm:

# Initial clone
GIT_SSL_CAINFO=/etc/ssl/certs/rorcz_root_cert.pem \
    git clone https://repo.or.cz/org-mode.git

# Ensure all future interactions with origin remote also work
cd org-mode
git config http.sslCAInfo /etc/ssl/certs/rorcz_root_cert.pem

Lưu ý rằng sử dụng cục bộ git configở đây (tức là không có --global) có nghĩa là chứng chỉ tự ký này chỉ được tin cậy cho kho lưu trữ cụ thể này, điều này thật tuyệt. Nó cũng đẹp hơn so với việc sử dụng GIT_SSL_CAPATHvì nó giúp loại bỏ rủi ro gitkhi xác minh thông qua Cơ quan cấp chứng chỉ khác có khả năng bị xâm phạm.


3
Thật trùng hợp, http.sslCAPath sử dụng logic ssl_capath của libcurl. Tôi nghĩ rằng bạn thực sự có thể lưu trữ bất kỳ số lượng certs nào trong /etc/ssl/certs/thư mục và nó sẽ sắp xếp một cách hiệu quả mọi thứ bạn cần. Tôi đã không kiểm tra điều này, làm phiền bạn, nhưng nó có thể cho phép bạn sử dụng một --globalloạt các certs. Giá trị thử nghiệm, tuy nhiên.
Christopher

6
Xét những rủi ro của việc vô hiệu hóa xác minh SSL hoàn toàn, và thực tế các câu hỏi là "làm thế nào tôi có thể làm cho git chấp nhận một chứng chỉ tự ký?", Điều này sẽ là câu trả lời được chấp nhận.
PLNech

5
Trong một thế giới lý tưởng, sẽ có một cái gì đó giống nhưgit config http.validCertFingerprint <base64-encoded-hash-of-certifcate>
Dòng chảy

1
Câu trả lời duy nhất trên Internet thực sự hoạt động cho kịch bản của tôi. Đó là thư viện VCS của Nhà soạn nhạc riêng, được lưu trữ trên Gitlab tự lưu trữ qua SSL mà tôi cần phải có trong dự án được git phiên bản.
Dejv

1
Từ một bản sao mới; điều này có thể được thực hiện trong một dòng duy nhất: git clone --config http.sslCAInfo=<path_to_cert> https://repo.or.cz/org-mode.git(Không cần phải gọi lệnh 'git config' sau).
Aaron

39

Cấu hình chứng chỉ tự ký Git

tl; dr

KHÔNG BAO GIỜ vô hiệu hóa tất cả xác minh SSL!

Điều này tạo ra một văn hóa bảo mật xấu. Đừng là người đó.

Các khóa cấu hình bạn đang theo sau là:

Đây là để cấu hình chứng chỉ máy chủ mà bạn tin tưởng

Đây là để cấu hình chứng chỉ CỦA BẠN để đáp ứng với các thách thức SSL.

Chọn lọc áp dụng các cài đặt trên cho các máy chủ cụ thể.

Toàn cầu .gitconfigcho các cơ quan cấp chứng chỉ tự ký

Vì lợi ích của riêng tôi và đồng nghiệp của tôi, đây là cách chúng tôi quản lý để có được chứng chỉ tự ký để làm việc mà không vô hiệu hóa sslVerify. Chỉnh sửa của bạn.gitconfig để sử dụng git config --global -ethêm:

# Specify the scheme and host as a 'context' that only these settings apply
# Must use Git v1.8.5+ for these contexts to work
[credential "https://your.domain.com"]
  username = user.name

  # Uncomment the credential helper that applies to your platform
  # Windows
  # helper = manager

  # OSX
  # helper = osxkeychain

  # Linux (in-memory credential helper)
  # helper = cache

  # Linux (permanent storage credential helper)
  # https://askubuntu.com/a/776335/491772

# Specify the scheme and host as a 'context' that only these settings apply 
# Must use Git v1.8.5+ for these contexts to work
[http "https://your.domain.com"]
  ##################################
  # Self Signed Server Certificate #
  ##################################

  # MUST be PEM format
  # Some situations require both the CAPath AND CAInfo 
  sslCAInfo = /path/to/selfCA/self-signed-certificate.crt
  sslCAPath = /path/to/selfCA/
  sslVerify = true

  ###########################################
  # Private Key and Certificate information #
  ###########################################

  # Must be PEM format and include BEGIN CERTIFICATE / END CERTIFICATE, 
  # not just the BEGIN PRIVATE KEY / END PRIVATE KEY for Git to recognise it.
  sslCert = /path/to/privatekey/myprivatecert.pem

  # Even if your PEM file is password protected, set this to false.
  # Setting this to true always asks for a password even if you don't have one.
  # When you do have a password, even with this set to false it will prompt anyhow. 
  sslCertPasswordProtected = 0

Người giới thiệu:

Chỉ định cấu hình khi git clone-ing

Nếu bạn cần áp dụng nó trên cơ sở mỗi repo, tài liệu sẽ cho bạn biết chỉ cần chạy git config --localtrong thư mục repo của bạn. Chà điều đó không hữu ích khi bạn chưa có repo nhân bản tại địa phương bây giờ phải không?

Bạn có thể thực hiện global -> localhokey-pokey bằng cách đặt cấu hình toàn cầu của mình như trên và sau đó sao chép các cài đặt đó sang cấu hình repo cục bộ của bạn sau khi sao chép ...

HOẶC những gì bạn có thể làm là chỉ định các lệnh cấu hình tạigit clone đó được áp dụng cho repo đích sau khi được sao chép.

# Declare variables to make clone command less verbose     
OUR_CA_PATH=/path/to/selfCA/
OUR_CA_FILE=$OUR_CA_PATH/self-signed-certificate.crt
MY_PEM_FILE=/path/to/privatekey/myprivatecert.pem
SELF_SIGN_CONFIG="-c http.sslCAPath=$OUR_CA_PATH -c http.sslCAInfo=$OUR_CA_FILE -c http.sslVerify=1 -c http.sslCert=$MY_PEM_FILE -c http.sslCertPasswordProtected=0"

# With this environment variable defined it makes subsequent clones easier if you need to pull down multiple repos.
git clone $SELF_SIGN_CONFIG https://mygit.server.com/projects/myproject.git myproject/

Lót

EDIT: Xem câu trả lời của VonC chỉ ra một cảnh báo về các đường dẫn tuyệt đối và tương đối cho các phiên bản git cụ thể từ 2.14.x / 2.15 đến một lớp lót này

git clone -c http.sslCAPath="/path/to/selfCA" -c http.sslCAInfo="/path/to/selfCA/self-signed-certificate.crt" -c http.sslVerify=1 -c http.sslCert="/path/to/privatekey/myprivatecert.pem" -c http.sslCertPasswordProtected=0 https://mygit.server.com/projects/myproject.git myproject/

CentOS unable to load client key

Nếu bạn đang thử điều này trên CentOS và .pemtệp của bạn sẽ cung cấp cho bạn

unable to load client key: "-8178 (SEC_ERROR_BAD_KEY)"

Sau đó, bạn sẽ muốn câu trả lời StackOverflow này về cách curlsử dụng NSS thay vì Open SSL.

Và bạn sẽ muốn xây dựng lại curltừ nguồn :

git clone http://github.com/curl/curl.git curl/
cd curl/
# Need these for ./buildconf
yum install autoconf automake libtool m4 nroff perl -y
#Need these for ./configure
yum install openssl-devel openldap-devel libssh2-devel -y

./buildconf
su # Switch to super user to install into /usr/bin/curl
./configure --with-openssl --with-ldap --with-libssh2 --prefix=/usr/
make
make install

khởi động lại máy tính vì libcurl vẫn còn trong bộ nhớ dưới dạng thư viện dùng chung

Python, pip và conda

Liên quan : Làm cách nào để thêm chứng chỉ CA Root tùy chỉnh vào CA Store được sử dụng bởi pip trong Windows?


Tôi phải đảm bảo chứng chỉ máy chủ Tự ký có định dạng PEM trước khi Git chấp nhận. Ngoài ra, một số câu trả lời ở trên chỉ ra rằng người ta chỉ cần cung cấp đường dẫn đến thư mục của cert http.sslCAPath. Trong trường hợp của tôi, tôi đã phải sử dụng http.sslCAInfođể chỉ định các tập tin cụ thể. Việc cho phép Git kết nối với GitHub riêng của chúng tôi mà không vô hiệu hóa xác thực SSL.
Zarepheth

@Zarepheth Cảm ơn thông tin đó. Tôi gặp vấn đề tương tự đòi hỏi cả CAPath và CAInfo. Vì Chứng chỉ CA của chúng tôi là định dạng PEM nên tôi đã bỏ qua tài liệu này. Tôi đã cập nhật câu trả lời với những bổ sung này. Vui mừng bạn đã có thể kết nối an toàn.
Josh Đỉnh

Đây có lẽ là câu trả lời "sửa chữa" dài hạn tốt nhất nếu bạn buộc phải sử dụng HTTPS để sao chép và không thể chỉ sử dụng SSH để bỏ qua mớ hỗn độn chứng chỉ.
dragon788

Tôi đã định thêm câu trả lời này! Vui mừng vì người khác đã phát hiện ra nó.
Franklin Yu

14

Tôi tiếp tục gặp vấn đề này, vì vậy đã viết một tập lệnh để tải xuống chứng chỉ tự ký từ máy chủ và cài đặt nó vào ~ / .gitcerts, sau đó cập nhật git-config để trỏ đến các chứng chỉ này. Nó được lưu trữ trong cấu hình toàn cầu, vì vậy bạn chỉ cần chạy nó một lần cho mỗi điều khiển từ xa.

https://github.com/iwonbigbro/tools/blob/master/bin/git-remote-install-cert.sh


Đẹp, mặc dù sẽ còn đẹp hơn khi có tùy chọn sử dụng cấu hình cục bộ thay vì toàn cầu.
Adam Spiers

3
Bạn luôn có thể rẽ nhánh và xóa tùy chọn --global ;-)
Craig

Điều này là khá tuyệt vời, nó đến trong lô?
Halter

10

Câu trả lời này được trích từ bài viết này của tác giả Michael Kauffman.

Sử dụng Git cho Windows với chứng chỉ SSL công ty

Vấn đề :

Nếu bạn có chứng chỉ SSL công ty và muốn sao chép repo của mình từ bảng điều khiển hoặc VSCode, bạn sẽ gặp phải lỗi sau:

gây tử vong: không thể truy cập ' https: // myserver / tfs / DefaultCollection / _git / Proj / ': Vấn đề chứng chỉ SSL: không thể lấy chứng chỉ nhà phát hành địa phương

Giải pháp :

  1. Xuất chứng chỉ gốc tự ký vào một tập tin. Bạn có thể làm điều này từ trong trình duyệt của bạn.

  2. Xác định vị trí tệp tin ca-bundle.crt của người dùng trong thư mục git của bạn (phiên bản hiện tại C: \ Chương trình tập tin \ Git \ usr \ ssl \ certs nhưng đã bị thay đổi trong quá khứ). Sao chép tập tin vào hồ sơ người dùng của bạn. Mở nó bằng trình soạn thảo văn bản như VSCode và thêm nội dung chứng chỉ đã xuất của bạn vào cuối tệp.

Bây giờ chúng ta phải cấu hình git để sử dụng tệp mới:

git config --global http.sslCAInfo C:/Users/<yourname>/ca-bundle.crt

Điều này sẽ thêm mục sau vào tệp .gitconfig trong thư mục gốc của hồ sơ người dùng của bạn.

[http] sslCAInfo = C:/Users/<yourname>/ca-bundle.crt


1
Cảm ơn bạn, tôi thấy câu trả lời này dễ dàng hơn và an toàn hơn cho Windows.
Pisu

7

Để tắt xác minh SSL cho một kho lưu trữ cụ thể Nếu kho lưu trữ hoàn toàn dưới sự kiểm soát của bạn, bạn có thể thử:

 git config --global http.sslVerify false

3

Hãy cẩn thận khi bạn đang sử dụng một lớp lót bằng sslKey hoặc sslCert, như trong câu trả lời của Josh Peak :

git clone -c http.sslCAPath="/path/to/selfCA" \
  -c http.sslCAInfo="/path/to/selfCA/self-signed-certificate.crt" \
  -c http.sslVerify=1 \
  -c http.sslCert="/path/to/privatekey/myprivatecert.pem" \
  -c http.sslCertPasswordProtected=0 \
https://mygit.server.com/projects/myproject.git myproject

Chỉ Git 2.14.x / 2.15 (quý 3 năm 2015) mới có thể diễn giải một đường dẫn ~username/mykeymột cách chính xác (trong khi nó vẫn có thể diễn giải một đường dẫn tuyệt đối như /path/to/privatekey).

Xem cam kết 8d15496 (ngày 20 tháng 7 năm 2017) của Junio ​​C Hamano ( gitster) .
Giúp đỡ: Charles Bailey ( hashpling) .
(Được hợp nhất bởi Junio ​​C Hamano - gitster- trong cam kết 17b1e1d , ngày 11 tháng 8 năm 2017)

http.c: http.sslcerthttp.sslkeylà cả hai tên đường

Quay lại khi codepath http_options () hiện đại được tạo để phân tích các tùy chọn http. * Khác nhau tại 29508e1 ("Cô lập chức năng yêu cầu HTTP được chia sẻ", 2005-11-18, Git 0.99.9k), và sau đó đã được sửa chữa để tương tác giữa nhiều các tệp cấu hình trong 7059cd9 (" http_init(): Khắc phục phân tích tệp cấu hình", 2009-03-09, Git 1.6.3-rc0), chúng tôi đã phân tích các biến cấu hình như http.sslkey, http.sslcertnhư các chuỗi vanilla đơn giản, vì git_config_pathname()không hiểu ~[username]/tiền tố "".

Sau đó, chúng tôi đã chuyển đổi một số trong số chúng (cụ thể là http.sslCAPathhttp.sslCAInfo) để sử dụng hàm và thêm các biến muốn http.cookeyFile http.pinnedpubkeysử dụng hàm từ đầu. Do đó, các biến này đều hiểu ~[username]/tiền tố "".

Thực hiện hai biến còn lại, http.sslcerthttp.sslkey, cũng nhận thức được quy ước, vì cả hai đều là tên đường dẫn rõ ràng đến các tệp.


3

Sử dụng phiên bản Git 64 bit trên Windows, chỉ cần thêm chứng chỉ CA tự ký vào các tệp sau:

  • C: \ Tệp chương trình \ Git \ mingw64 \ ssl \ certs \ ca-bundle.crt
  • C: \ Tệp chương trình \ Git \ mingw64 \ ssl \ certs \ ca-bundle.trust.crt

Nếu nó chỉ là một chứng chỉ tự ký máy chủ, hãy thêm nó vào

  • C: \ Tệp chương trình \ Git \ mingw64 \ ssl \ cert.pem

Đây là cách tốt nhất để đối phó với tường lửa của công ty chúng tôi ký lại tất cả lưu lượng HTTPS. Tôi chỉ lấy tệp crt được định dạng PEM của chứng chỉ tường lửa làm văn bản và sao chép nó vào ca-bundle và nó hoạt động như một lá bùa.
Mitten.O

3

Kiểm tra cài đặt tường lửa và chống vi-rút của bạn.

Từ ngày này sang ngày khác, git không hoạt động nữa. Với những gì được mô tả ở trên, tôi thấy rằng Kaspersky đặt chứng chỉ gốc chống vi-rút cá nhân chống vi-rút tự ký ở giữa. Tôi đã không quản lý để Git chấp nhận chứng chỉ đó theo hướng dẫn ở trên. Tôi đã từ bỏ điều đó. Điều làm việc với tôi là vô hiệu hóa tính năng để Quét các kết nối được mã hóa.

  1. Mở Kaspersky
  2. Cài đặt> Bổ sung> Mạng> Không quét các kết nối được mã hóa

Sau này, git hoạt động trở lại với sslVerify được kích hoạt.

Ghi chú. Điều này vẫn chưa làm tôi hài lòng, vì tôi muốn có tính năng chống vi-rút này hoạt động. Trong cài đặt nâng cao, Kaspersky hiển thị danh sách các trang web sẽ không hoạt động với tính năng đó. Github không được liệt kê là một trong số họ. Tôi sẽ kiểm tra nó tại diễn đàn Kaspersky. Dường như có một số chủ đề, ví dụ: https://forum.kaspersky.com/index.php?/topic/395220-kis-interfering-with-git/&tab=comments#comment-2801211



1

Tôi làm như thế này:

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

3
Đừng sử dụng --global! Rất nhiều hướng dẫn cho thấy --globalnhưng đó là một ý tưởng rất tồi nói chung và http.sslVerifynói riêng. Ngay khi bạn có nhiều hơn một bản sao từ các dự án, công ty, nhóm khác nhau trên máy tính, bạn có thể nhanh chóng gặp rắc rối. Ví dụ: id người dùng và email bị rò rỉ từ dự án này sang dự án tiếp theo có thể khá lúng túng. Và sử dụng --globaltrên http.sslVerifycó thể mở ra cho bạn tất cả các vấn đề bảo mật. Vì vậy: Đừng sử dụng --global- trừ khi bạn nhận thức đầy đủ về các tác dụng phụ và sẵn sàng chấp nhận rủi ro.
Martin

1

Trên Windows, nó hoạt động với tôi:

Thêm nội dung của chứng chỉ tự ký của bạn vào cuối tệp ca-bundle . Bao gồm ----- CHỨNG NHẬN BEGIN ---------- CHỨNG NHẬN KẾT THÚC ----- dòng

Vị trí của tệp ca-bundle thường là C: \ Program Files \ Git \ mingw64 \ ssl \ certs

Sau đó, thêm đường dẫn của ca-bundle tệp vào cấu hình git toàn cầu. Lệnh sau thực hiện thủ thuật:git config --global http.sslCAInfo "C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt"

Ghi chú: Đường dẫn phụ thuộc vào đường dẫn cục bộ của tệp ca-bundle!


1

Tôi sử dụng một máy windows và bài viết này đã giúp tôi. Về cơ bản tôi đã mở ca-bundle.crt trong notepad và thêm chứng chỉ chuỗi trong đó (tất cả chúng). Vấn đề này thường xảy ra đối với các mạng công ty nơi chúng tôi có người trung gian ngồi giữa hệ thống và git repo. Chúng ta cần xuất tất cả các certs trong chuỗi cert ngoại trừ cert cert ở định dạng cơ sở 64 và thêm tất cả chúng vào ca-bundle.crt và sau đó cấu hình git cho tệp crt đã sửa đổi này.


1

Đó không phải là một cách thực hành tốt để đặt http.sslVerify sai. Thay vào đó chúng ta có thể sử dụng chứng chỉ SSL.

Vì vậy, đại lý xây dựng sẽ sử dụng https với chứng chỉ SSL và PAT để xác thực. nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Sao chép nội dung của tập tin cer bao gồm cảbbbinin và chương trình--.

git bash on build agent => git config HPglobal http.sslcainfo, C:

Do đó, đại lý xây dựng có thể truy cập chứng chỉ SSL


0

Câu trả lời của tôi có thể bị trễ nhưng nó đã làm việc cho tôi. Nó có thể giúp ai đó.

Tôi đã thử các bước được đề cập ở trên và điều đó không giải quyết được vấn đề.

thử cái nàygit config --global http.sslVerify false

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.