Làm cách nào để tôi đặt GIT_SSL_NO_VERIFY cho các repos cụ thể?


283

Tôi phải sử dụng máy chủ git mà không có chứng chỉ phù hợp, nhưng tôi không muốn phải làm

env GIT_SSL_NO_VERIFY=true git command

mỗi lần tôi thực hiện một thao tác git. Nhưng tôi cũng muốn để SSL được kích hoạt cho các kho git khác. Có cách nào để biến địa phương này thành một repo không?



f15ijp.com/2012/08/ Lời một trong những giải pháp tốt nhất tôi tìm thấy
vikas etagi

Câu trả lời:


540

Bạn có thể làm

git config http.sslVerify false

trong repo cụ thể của bạn để vô hiệu hóa kiểm tra chứng chỉ SSL cho chỉ repo đó.


54
git config --global http.sslVerify "false"
roothahn 26/07/17

24
Không nên sử dụng --global vì OP đã yêu cầu cụ thể rằng anh ta chỉ muốn nó cho các repos cụ thể.
Kannan Ekanath

9
Lưu ý: Có vẻ như --globaltùy chọn IS cần thiết khi chưa kiểm tra repo (không thể đặt tùy chọn cho một repo chưa tồn tại cục bộ). Người ta luôn có thể bật lại sau.
James Wilkins

2
Tôi đã chỉnh sửa lại, vì câu hỏi đặc biệt không yêu cầu điều này cộng với đó là một ý tưởng tồi để vô hiệu hóa điều này trên toàn cầu vì lý do bảo mật.
Étienne

2
Tôi quay lại chỉnh sửa một lần nữa, vì những lý do tương tự như trên. Câu hỏi này là về một repo cụ thể. Nếu bạn muốn có một câu trả lời cho tất cả các repos, đó nên là một câu hỏi riêng biệt.
Calimo

121

Bạn có thể làm như sau

Đối với một repo duy nhất

git config http.sslVerify false

Đối với tất cả repo

git config --global http.sslVerify false

7
Điều này sẽ vô hiệu hóa xác minh SSL cho tất cả các kho lưu trữ. Câu hỏi ban đầu là về việc đặt nó cục bộ vào một kho lưu trữ duy nhất.
Gwynne Raskind

4
Tại sao trên thế giới bạn đang sử dụng sudo? kho lưu trữ cục bộ không cần nó và cấu hình người dùng nằm trong $ HOME (bất cứ thứ gì có trong hệ thống của bạn) nên cũng không cần sudo.
mcepl

@ParthianShot nếu họ không phải là người dùng quản trị, làm thế nào họ có thể sử dụng cái này với sudo?
Thirumalai murugan

1
@Thirumalaimurugan Bây giờ bạn có nghiêm túc không? sudochỉ nên được sử dụng khi bạn thực sự cần root để làm một cái gì đó. Giống như cài đặt phần mềm mới, sửa đổi các tệp hệ thống quan trọng, định dạng lại ổ đĩa, cấu hình lại mạng, quản lý dịch vụ ... Không có gì trong câu hỏi của anh chàng này để ám chỉ rằng anh ta cần root để làm bất cứ điều gì. Nếu bạn là quản trị viên, bạn nên chạy hầu hết các lệnh của mình - bao gồm cả các lệnh thay đổi cấu hình của bạn - mà không cần sudo hầu hết thời gian.
Bắn Parthian

1
@HolaSoyEduFelizNavidad, Khi OP nói "cho tất cả repo", OP có nghĩa là "tất cả repos cho người dùng này", chứ không phải "tất cả repos trên máy tính."
vy32

98

Giống như những gì Thirumalai đã nói, nhưng bên trong kho được nhân bản và không có --global. I E,

  1. GIT_SSL_NO_VERIFY=true git clone https://url
  2. cd <directory-of-the-clone>
  3. git config http.sslVerify false

Giải pháp tốt cho các trường hợp khi bạncould not lock global config file .gitconfig: Permission denied
antongorodezkiy 29/07/2015

1
Nếu bạn bị từ chối quyền trên .gitconfig, có một cái gì đó nghiêm trọng * với hệ thống của bạn. $ HOME của bạn sẽ có sẵn cho bạn (đó là nơi .gitconfig nên có, không nên sao?).
mcepl

Đây không thực sự là máy chủ của tôi. Nhưng dù sao cũng cảm ơn bạn. Và tôi đã xóa đường dẫn khỏi thông báo lỗi, thực sự trên máy chủ đó git đang cố truy cập .gitconfig ở đâu đó trong/var/www/...
antongorodezkiy

Câu trả lời này cũng có một số giải thích tuyệt vời về các lựa chọn. stackoverflow.com/a/11622001
dragon788

2
xuất GIT_SSL_NO_VERIFY = true
ETech

11

Đặc biệt nếu bạn cần bản sao đệ quy

GIT_SSL_NO_VERIFY=true git clone --recursive https://github.com/xx/xx.git

10

Nếu bạn đang sử dụng máy Windows và đã cài đặt Git, bạn có thể thử các bước dưới đây:

  1. Chuyển đến thư mục cài đặt Git, ví dụ: C: \ Program Files (x86) \ Git \ etc
  2. Chỉnh sửa tập tin: gitconfig
  3. Trong phần [http] , thêm dòng: sslVerify = false

    [http]
      sslVerify = false
    

1
điều này cũng không đáp ứng câu hỏi ở trên, nơi anh ta nói rằng anh ta không muốn ảnh hưởng đến các repos khác.
bryanmac

và nó thực sự hữu ích khi bạn không thể chạy các lệnh git! (ig có sourcetree trên một cửa sổ máy ảo và đặt vào thư mục src trong một đường dẫn UNC trong đó tích hợp sorcetree thiết bị đầu cuối không thể nhận ra!
danrah

1
Thx, điều này đã làm việc, bằng cách nào đó sửa lỗi dòng lệnh không hoạt động.
Nrj 18/03/2016

Đối với người dùng TortoiseGit, bạn có thể chỉnh sửa phần này thành tệp cấu hình cục bộ bằng cách thực hiện cập nhật Cài đặt theo ngữ cảnh và chọn tùy chọn chỉ chỉnh sửa cục bộ
Steve Townsend

5

Có một cách dễ dàng để cấu hình GIT để xử lý máy chủ của bạn đúng cách. Chỉ cần thêm một phần http cụ thể cho máy chủ git của bạn và chỉ định chứng chỉ nào (được mã hóa Base64) để tin cậy:

~ / .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

Bằng cách này, bạn sẽ không còn lỗi SSL nữa và xác thực (thường) chứng chỉ tự ký. Đây là cách tốt nhất để đi, vì nó bảo vệ bạn khỏi các cuộc tấn công trung gian. Khi bạn vô hiệu hóa xác minh ssl, bạn dễ bị các loại tấn công này.

https://git-scm.com/docs/git-config#git-config-httplturlgt


5

Nếu bạn phải tắt kiểm tra SSL cho một máy chủ git lưu trữ một số kho lưu trữ, bạn có thể chạy:

git config --bool --get-urlmatch http.sslverify https://my.bad.server false

(Nếu bạn vẫn sử dụng git <v1.8.5, hãy chạy git config --global http.https://my.bad.server.sslVerify false)

Giải thích từ tài liệu có lệnh ở cuối, hiển thị .gitconfignội dung trông như sau:

[http "https://my.bad.server"]
        sslVerify = false

Nó sẽ bỏ qua mọi kiểm tra chứng chỉ cho máy chủ này, bất kể kho lưu trữ.

Bạn cũng có một số giải thích trong


4

Điều này làm việc cho tôi:

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

2

Câu hỏi này tiếp tục được đưa ra và tôi chưa tìm thấy kết quả thỏa mãn, vì vậy đây là câu trả lời cho tôi (dựa trên câu trả lời trước https://stackoverflow.com/a/52706362/1806760 , không hoạt động):

Máy chủ của tôi là https://gitlab.devvới một chứng chỉ tự ký.

Lần chạy đầu tiên git config --system --edit(từ dấu nhắc lệnh nâng cao, thay đổi --systemthành --globalnếu bạn muốn làm điều đó chỉ cho người dùng của bạn), sau đó chèn đoạn mã sau vào bất kỳ [http]phần nào trước đó :

[http "https://gitlab.dev"]
        sslVerify = false

Sau đó kiểm tra xem bạn đã làm mọi thứ chính xác chưa:

> git config --type=bool --get-urlmatch http.sslVerify https://gitlab.dev
false

1

đối với windows, nếu bạn muốn cấu hình toàn cầu, thì hãy chạy

git config --global http.sslVerify false

OP yêu cầu specific reposrõ ràng
malat

0

Trên Linux, nếu bạn gọi nó trong thư mục kho git:

git config http.sslVerify false

Điều này sẽ thêm sslVerify = falsevào [http]phần của configtệp trong .gitthư mục, cũng có thể là giải pháp, nếu bạn muốn thêm thủ công với nano .git/config:

...
[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.